2016-03-24 3 views
1

У меня есть несколько Div с функцией OnClick, как показано ниже:JQuery Изменить класс в ближайший «я» из Div Clicked

<div onclick="myfunc();"> 
    <i class="myclass1"></i> 
</div> 

<div onclick="myfunc();"> 
    <i class="myclass1"></i> 
</div> 

<div onclick="myfunc();"> 
    <i class="myclass1"></i> 
</div> 

<div onclick="myfunc();"> 
    <i class="myclass1"></i> 
</div> 

Я хочу изменить класс в «я» из Div я решаю нажмите кнопку.

Это то, что я пытался, но ничего не меняется:

$(this).closest('i').removeClass('myclass1'); 
$(this).closest('i').addClass('myclass2'); 

Как я могу решить эту проблему, так что изменяет класс?

ответ

6

Вам следует избегать встроенных обработчиков, и вам необходимо .find, что i внутри div. .closest() поиск вверх dom

$('div').on('click',function(){ 

    $(this).find('i').removeClass('myclass1'); 
    $(this).find('i').addClass('myclass2'); 
}); 
+1

Примечание что вы можете упростить это до простого '$ (this) .find ('i'). toggleClass ('myclass1 myclass2');' –

+0

Это изменение всех классов div, а не только того, на которое я нажал – Satch3000

+0

Take посмотрите здесь: http://jsbin.com/hudama/edit?html,css,js,output. Хорошая практика - избегать встроенных обработчиков и добавить те div, которые вы хотите изменить, но если нет, вы можете вставить это в 'myfunc() ' –

1

Если бы я был ты, я бы поставил событие щелчка на элементе я вместо того, чтобы:

$('.myclass1').click(function(){ 
$(this).removeClass('myclass1'); 
$(this).addClass('myclass2'); 
}) 

$('.myclass2').click(function(){ 
$(this).removeClass('myclass2'); 
$(this).addClass('myclass1'); 
}) 

двутавровых HTML элемент действительно предназначен для определения курсивом http://www.w3schools.com/tags/tag_i.asp

+1

Да, я знаю, но он также очень используется для значков :) – Satch3000

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