как перейти или избежать цепочки в jQuery

#jquery #chain

#jquery #цепочка

Вопрос:

Как прыгать или избегать цепочки в jQuery.

например.

 $("h3").click(function(){
    //doSomething
    if(~~)  
        // in this case, escape chain(A and B function will be not work)
    else if(~~) 
        // in this case, jump to B case(A function will be not work)
})
.bind(A, function(){
    do A case.
})
.bind(B, function(){
    do B case.
});
  

возможно ли это?

Ответ №1:

Код в обработчике щелчков не выполняется до тех пор, пока фактически не произойдет щелчок, в то время как вызовы привязки обрабатываются сразу после применения обработчика щелчков. Похоже, то, что вы хотите, — это условное выполнение различных обработчиков. Вы могли бы добиться этого, установив данные для элемента в исходном обработчике щелчков, а затем проверив состояние в последующих обработчиках, но, вероятно, было бы лучше создать их как автономные функции и просто вызвать их из обработчика одного щелчка по мере необходимости.

Ответ №2:

Если A и B на самом деле являются просто функциями, одна из которых должна вызываться по щелчку, выполните:

 function A()
{
  ...
}
function B()
{
  ...
}

$("h3").click(function(){
    //doSomething
    if(~~)  
        A();
    else if(~~) 
        B();
})
  

Однако ваш вопрос не совсем ясен.

Ответ №3:

Чтобы завершить свою цепочку, вы можете использовать метод jQuery .end() ; Но в этом случае у вас есть условие, и для каждого условия должны выполняться два разных кода. Таким образом, вы можете использовать jQuery в $(this) соответствии с вашими условиями, чтобы ссылаться на то, что нажато, и запускать код на основе вашего условия:

 $("h3").click(function(){
    //doSomething
    if(~~)  
        // in this case, escape chain(A and B function will be not work)
        $(this).bind(A, function(){
            //do A case.
         })
    else if(~~) 
        // in this case, jump to B case(A function will be not work)
       $(this).bind(B, function(){
          //do B case.
       });
});