2015-06-17 2 views
0

Я использую этот код:JQuery Почему не работает toggleClass здесь?

$(".heading.media").click(function (event) { 
    $("#cart").toggleClass("active"); 
    $('#cart').load('index.php?route=module/cart #cart > *'); 
}); 

Но по какой-то причине .toggleClass("active") не работает. Он открывается, но после этого я не могу переключиться.

Когда я удаляю $('#cart').load('index.php?route=module/cart #cart > *');, он работает нормально.

Почему $('#cart').load('index.php?route=module/cart #cart > *'); вызывают проблемы?

+4

создать скрипку для этого –

+0

любая ошибка в консоли ?? –

+0

Может быть, потому что 'load()' вставляет элементы, которые дублируют идентификатор '# cart' –

ответ

3

Попробуйте выбрать элемент методом event delegation и попробуйте использовать его.

$(document).on('click', '.heading.media', function (event) { 
    $("#cart").toggleClass("active"); 
    $('#cart').load('index.php?route=module/cart #cart > *'); 
}); 
+0

Ya, если '.heading.media' является ребенком' # cart' –

+0

Отлично! Спасибо, что это сработало. Могу ли я спросить, почему ваш код работает, а мой нет? – wamp

+1

@wamp Поскольку вы удаляете дочерние объекты из DOM с помощью 'load()' в своем родителе. Использование делегирования исправляет его путем привязки события «click» к static parent. FYI, вы можете делегировать событие вместо '# cart':' $ ('# cart'). On ('click', '.heading.media', handler); 'http://learn.jquery.com/events/event-delegation/ –

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