jQuery Multiple Event Handlers - How to Cancel?
Thanks, unbind works for redefining functions.
$(document).ready(function(){
$("#buscar_mercaderia").click(function(){ alert('Seleccione Tipo de mercaderia');
});
$(".tipo").live('click',function(){
if($(this).attr('checked')!=''){
if($(this).val()=='libro'){
$("#buscar_mercaderia").unbind('click');
$("#buscar_mercaderia").click(function(){ window.open('buscar_libro.php','Buscar Libros', 'width=800,height=500'); });
}else if($(this).val()=='otra'){
$("#buscar_mercaderia").unbind('click');
$("#buscar_mercaderia").click(function(){ window.open('buscar_mercaderia.php','Buscar Mercaderias', 'width=800,height=500'); });
}
}
})
Use the stopImmediatePropagation
function of the jQuery event object.
Keeps the rest of the handlers from being executed. This method also stops the bubbling by calling event.stopPropagation().
$(document).click(function(event) {
alert('a');
event.stopImmediatePropagation();
return false;
});
$(document).click(function() {
alert('b');
});
The first thing I'm asking is: why do you have two functions bound to the same click event? Having access to the code, why don't you just make that one single call?
$(function (){
var callbackOne = function(e){
alert("I'm the first callback... Warning, I might return false!");
return false;
};
var callbackTwo = function(e){
alert("I'm the second callback");
};
$(document).click(function (e){
if(callbackOne(e)){
callbackTwo(e);
}
});
});
Does using unbind help?
$(document).click(function() {
alert('a');
$(this).unbind('click');
return false;
});