2016-06-23 3 views
0

вопрос лучше всего описывается на примере:Jquery - нажмите обработчик при использовании toggleClass

JS:

$(function() { 
    $('.classA').on('click', function() { functionA()); 
    $('.classB').on('click', function() { functionB() }); 
} 

var functionA = function() 
{ 
    alert('I am function A'); 
    $('.classA, .classB').toggleClass('classA classB'); 
} 

var functionB = function() 
{ 
    alert('I am function B'); 
    $('.classA, .classB').toggleClass('classA classB'); 
} 

Проблема просто положить, но трудно для меня, чтобы исправить: как и следовало ожидать, после нажатия класса А div, вызывается функция A, класс A переключается в класс B, но в следующий раз, когда я нажимаю тот же div, функция A все еще вызывается, тогда как я ожидаю, что тогда будет вызвана функция B. Я делаю что-то неправильно ???

+2

Как раз как подсказка - этого было бы достаточно: '.on ('click', functionA);'. То же самое для другой функции. – melancia

+0

Вы привязали обработчик событий до того, как элемент получил новый класс. Вам нужно искать _delegation_. – melancia

+0

В ваших функциях отсутствует ключевое слово 'function'. Например. 'function functionA() {...' – j08691

ответ

2

Вы можете delegate the event от документа до элемента с соответствующим классом, а затем применить jQuery's toggleClass function к этому событию.

$(document).on('click','.classA', function() { 
     alert('I am function A'); 
     $('.classA, .classB').toggleClass('classA classB'); 
    }); 

    $(document).on('click','.classB', function() { 
     alert('I am function B'); 
    $('.classA, .classB').toggleClass('classA classB'); 
    }); 
+0

Это полностью решило мой вопрос, но! Это частично не по теме, и все же, если я пишу $ (document) .on ('click', '. ClassA', functionA()); то функция А запускается при событии загрузки документа. Эта проблема исчезает, если я меняю ее на .... ClassA ', function() {functionA()}); –

+0

Это было просто дать указание, что вам нужно делать. Вы можете определенно изменить его на основе ваших потребностей. – DinoMyte

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