#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.
});
});