2015-10-20 4 views
0

Я отключаю событие нажатия кнопки на одной и той же кнопке. Я хочу, чтобы связанная выше кнопка нажала еще раз на другой щелчок кнопки. Но это не работает.связать событие click после unbind

$("#showSelection").bind("click", function() { 
    alert("in"); 
    //unbinding the button click 
    $('#showSelection').unbind('click'); 
    }); 


    $("#kendowindow").click(function(){ 
    alert("in2"); 
    //want to bind the click event again but not working  
    $('#showSelection').bind('click');   
    }); 

ответ

2

Вы не можете просто переустановить его, вам придется снова добавить всю функцию обратного вызова.

Чтобы сделать это проще, вы можете использовать указанную функцию, и новые версии JQuery вы должны использовать on() и off(), и есть даже one(), если вы просто хотите, чтобы обработчик события стрелять один раз для каждого элемента, и, как вы» повторно используя идентификаторы, у вас есть только один соответствующий элемент, так:

function doStuff() { 
    alert("in"); 
}); 

$("#showSelection").one("click", doStuff); 

$("#kendowindow").on('click', function(){ 
    alert("in2"); 
    $("#showSelection").off('click').one("click", doStuff); 
}); 
+0

Спасибо за ответ :) –

0

вы можете использовать .one JQuery (в), чтобы запустить первое событие щелчка только один раз:

$("#showSelection").one("click", function(){ 
    alert("in"); 
}); 

$("#kendowindow").click(function(){ 
    alert("in2"); 
    $("#showSelection").on("click", function(){ 
     alert("new event bound"); 
    });  
}); 

Однако я не уверен как сценарий, который вы пытаетесь выполнить. С помощью этого кода, если пользователь нажимает кнопку kendowindow FIRST, тогда он будет назначать второе событие вашему клику showSelection. Я не уверен, что это то, чего вы хотите или нет.

+0

Посмотрите на ответ от @adeneo. Если вы повторно привязываете одно и то же событие, вам лучше создать функцию, которую вы можете вызвать, чтобы вам не пришлось повторять себя. –

0

Вы можете использовать указанную функцию следующим образом:

function bindUnbind() { 
 
    console.log("in"); 
 
    //unbinding the button click 
 
    $(this).unbind('click'); 
 
} 
 

 
$("#showSelection").bind("click",bindUnbind); 
 

 

 
$("#kendowindow").click(function(){ 
 
    console.log("in2"); 
 
    //want to bind the click event again but not working  
 
    $('#showSelection').unbind('click').bind('click',bindUnbind);   
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="showSelection">Show Selection</div> 
 

 
<div id="kendowindow">Kendo Window</div>

+0

Спасибо за ответ :) –

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