как прыгнуть или избежать цепи в JQuery - PullRequest
0 голосов
/ 05 октября 2011

Как прыгнуть или уйти от цепочки в 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.
});

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

Ответы [ 3 ]

1 голос
/ 05 октября 2011

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

0 голосов
/ 05 октября 2011

Чтобы завершить цепочку, вы можете использовать метод 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.
       });
});
0 голосов
/ 05 октября 2011

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

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

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

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

...