jQuery - 添加 ID 而不是类

Posted

技术标签:

【中文标题】jQuery - 添加 ID 而不是类【英文标题】:jQuery - Add ID instead of Class 【发布时间】:2011-01-11 17:30:36 【问题描述】:

我正在使用当前的jQuery:

$(function() 
    $('span .breadcrumb').each(function()
        $('#nav').addClass($(this).text());
        $('#container').addClass($(this).text());
        $('.stretch_footer').addClass($(this).text())
        $('#footer').addClass($(this).text());
    );
);

它将面包屑中的文本应用到页面上的 4 个元素,允许我专门为那里的页面设置样式。

我想尝试添加 ID 而不是类,我该如何实现?

【问题讨论】:

ID 必须是唯一的才能成为有效的 Xhtml。 ID 必须符合更严格的规则,例如,不能有空格,以字母或 _ 开头,只能包含字母、数字或有限数量的其他字符。 @Peter:添加***的链接似乎有点多余。 Adding attribute in jQuery的可能重复 另见addID in jQuery? 在这样做时,您还必须为 DOM 中的每个元素使用唯一的 id,否则会产生无效的 HTML developer.mozilla.org/en-US/docs/Web/HTML/Global_attributes/id 【参考方案1】:

试试这个:

$('element').attr('id', 'value');

原来如此;

$(function() 
    $('span .breadcrumb').each(function()
        $('#nav').attr('id', $(this).text());
        $('#container').attr('id', $(this).text());
        $('.stretch_footer').attr('id', $(this).text())
        $('#footer').attr('id', $(this).text());
    );
);

因此,您正在更改/覆盖三个元素的 id 并将一个 id 添加到一个元素。 您可以根据需要进行修改...

【讨论】:

缓存怎么样?而不是制作“this”的 4 个不同的 jQuery 对象。 var text = $(this).text(); @petersendidt:同意,我在回答中说过,他需要根据需要进行修改。 更好:$('#nav, #container, .stretch_footer, #footer').attr('id', $(this).text()); .. 并不是说​​在这里使用 ID 是个好主意。 这只会工作一次,之后 ID 会发生变化......而且,你会继续覆盖相同的 ID,所以你最好为$('#nav, #container, .stretch_footer, #footer').attr('id', $('span .breadcrumb:first').text())(或last,@ 987654326@)。无论如何,这很奇怪。 这会创建多个具有相同 ID 的元素,这是无效的 HTML【参考方案2】:

请记住,这会覆盖元素已有的任何 ID:

 $(".element").attr("id","SomeID");

addClass 存在的原因是因为一个元素可以有多个类,所以你不必覆盖已经设置的类。但是对于大多数属性,在任何给定时间都只允许一个值。

【讨论】:

【参考方案3】:
$('selector').attr( 'id', 'yourId' );

【讨论】:

【参考方案4】:

如果您想“添加到 id”而不是替换它

首先捕获当前 id,然后附加您的新 id。对于在表单上使用输入状态的 twitter 引导程序特别有用。

    new_id = 'old_id inputSuccess';
    old_id = that.attr('id');
    that.attr('id', new_id.replace( /old_id/ig,old_id));

如果不这样做 - 您将丢失之前设置的所有属性。

第,

【讨论】:

一个有效的元素只能有一个id。 ***.com/questions/192048/…【参考方案5】:

我在咖啡脚本中这样做

booking_module_time_clock_convert_id = () ->
  if $('.booking_module_time_clock').length
    idnumber = 1
    for a in $('.booking_module_time_clock')
      elementID = $(a).attr("id")
      $(a).attr( 'id', "#elementID_#idnumber" )
      idnumber++

【讨论】:

以上是关于jQuery - 添加 ID 而不是类的主要内容,如果未能解决你的问题,请参考以下文章

jQuery DataTables:如何添加类if the string exists in the?

Kotlin 数据类 |添加我自己的变量而不是 JSON 键

添加类后jQuery单击事件不起作用

检查是不是使用 jQuery 检查了复选框,然后将一个类添加到最近的 td

如何使用jquery知道是不是存在具有特定ID的div [重复]

Jquery/Gridster 按钮影响所有项目而不是单个项目