2014-01-23 2 views
0

У меня есть сценарий, как гармошка, это мой сценарийRemove атр не работает

$(document).ready(function(){ 

    $('.film').click(function(){ 
     $('.film').attr('id','activeMenu'); 
     $('#film').slideToggle();  
    }); 

    $('#activeMenu').click(function(){ 
     $('.film').removeAttr("id");   
    }); 

}); 

это стиль activeMenu, когда он нажал

.activeMenu{ 
    background:#C9FF26; 
} 

если я нажимаю .film и снова нажмите , id=activeMenu не удаляется

Кто-нибудь знает эту проблему? thanks

+0

Вы можете показать свой HTML, а также. – putvande

+0

Для справки, вместо использования '$ ('. Film'). Attr ('id', 'activeMenu');' вы можете просто использовать 'this.id = 'activeMenu''. –

ответ

3

Ваша проблема возникает, потому что в то время, когда вы вызываете $('#activeMenu').click(...), у элемента, на который вы нацеливаетесь, на самом деле нет этого идентификатора.

Вы можете потенциально использование $(document).on('click', '#activeMenu', ...) (т.е. делегированы обработчик события), который будет работать, даже если #activeMenu еще не существует, но я не могу помочь, но чувствую, что это было бы неправильным решением. Это почти никогда не необходимо для динамического добавления или удаления идентификатора на существующий элемент. Правильное решение будет зависеть именно от того, чего вы пытаетесь достичь.

+0

@ZachL - правильное решение почти наверняка _doesn't_ связано с удалением любых идентификационных атрибутов. Наличие этого атрибута не должно использоваться для целей сигнализации. – Alnitak

+0

, но если я использую это, #activeMenu никогда не добавляется :( – Mamen

+0

@ user2924643, пожалуйста, опишите фактический результат, который вы пытаетесь достичь. Добавление и удаление идентификатора почти наверняка не является правильным средством для его получения. – Alnitak

-4

Вы должны использовать .он метод для регистрации нажмите на событие #activeMenu

$('#activeMenu').on('click',function(){ 
     $('.film').removeAttr("id");   
    }); 
+2

'click (..) 'просто отлично работает. Проблема в том, что идентификатор еще не существует. Кроме того, способ, которым вы используете, - это неправильный путь. – putvande

+1

Я все еще не думаю, что это сработает. '$ ('. always-present-parent-of-activeMenu'). on ('click', '#activeMenu' function ...' В противном случае он все равно потеряет обработчик события при удалении идентификатора. –

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