【问题标题】:jQuery: Dynamically add class that belongs to another elementjQuery:动态添加属于另一个元素的类
【发布时间】:2014-12-21 08:24:08
【问题描述】:

我想向属于刚刚单击的元素的元素添加一个类。班级发生了变化,但它们都以fa-开头。

所以我想动态获取刚刚点击的元素的类,并将其添加到不同的元素中。我试过这个,但由于一些奇怪的原因它不起作用。

$(".fa").on("click", function() {

    var Icon = $(".icon");

    Icon.addClass($(this).attr("class").match(/fa-[\w-]*\b/));

});

我什至提醒了这一点,以确保它获得了课程并且确实如此。

alert($(this).attr("class").match(/fa-[\w-]*\b/))

【问题讨论】:

标签: jquery class dynamic addclass


【解决方案1】:

match() 返回一个String 对象,而不是原始string;它需要添加这些额外的属性。 jQuery 似乎不喜欢 String 对象;也许它通过typeof ... == 'string' 进行测试,它为String 对象返回false。

只需添加 +'' 将其强制为 string 即可:

 selectedOptionIcon.addClass( $(this).attr("class").match(/fa-[\w-]*\b/)+'' );

Working fiddle.

【讨论】:

    【解决方案2】:

    $(".get-from-this").on("click", function() {
    
      var selectedOptionIcon = $("#add-to-this");
      selectedOptionIcon.addClass($(this).attr("class").match(/fa-[\w-]*\b/).toString());
    });

    【讨论】:

    • 这和第一个解决方案都有效,但哪个更好?
    • 优先使用 +'' 而不是 .toString()
    • @UserDy 我想我在这里有偏见,但更好的答案的一般标记是解释代码的标记。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-10
    • 2015-12-01
    • 2011-11-01
    • 2021-07-09
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多