2014-10-25 2 views
1

Я хочу добавить класс к элементу, принадлежащему элементу, который был просто щелкнул. Класс меняется, но все начинается с fa-.jQuery: динамически добавлять класс, принадлежащий другому элементу

Так что я хочу динамически получить класс элемента, который был просто щелкнул, и добавить его в другой элемент. Я пробовал это, но по какой-то странной причине он не работает.

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

    var Icon = $(".icon"); 

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

}); 

Я даже предупредил об этом, чтобы убедиться в его классе.

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

вы можете добавить HTML и скрипку? –

+0

Вот пример http://jsfiddle.net/opb48aLc/2/ – UserDy

ответ

2

match() возвращает String объект, а не примитивный string; ему нужно добавить эти дополнительные свойства. jQuery, похоже, не похож на объекты String; возможно, он тестирует через typeof ... == 'string', который возвращает false для объекта String.

Простое добавление +'', чтобы заставить его к string делает его работу:

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

Working fiddle.

1

$(".get-from-this").on("click", function() { 
 

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

+0

И это, и первое решение работают, хотя лучше? – UserDy

+0

предпочитают использовать + '', чем .toString() –

+0

@UserDy Я полагаю, что я пристрастен здесь, но общая оценка лучшего ответа - это тот, который объясняет код. – Scimonster

Смежные вопросы