2013-09-24 23 views
0

我有這樣的: http://jsfiddle.net/G3VjC/運行JavaScript的BTN而不是容器

這簡直是:

$(document).ready(function() { 

$(document).on('click','#btn',function(){ 
    console.log('ran btn'); 
}); 
$(document).on('click','#containerdiv',function(){ 
    console.log('ran div'); 
}); 

});

但是,當點擊按鈕運行btn JS和容器JS(請參閱控制檯日誌)。

我該如何區分它們?

感謝

回答

4

使用stopPropagation()

$(document).on('click','.meee',function(e){ // add event as argument 
    console.log('ran btn'); 
    e.stopPropagation() 
}); 
+0

謝謝。這工作。 – user1380591

1

試試這個

$(document).ready(function() { 
    $(document).on('click','#containerdiv',function(){ 
     console.log('ran div'); 

    }); 

    $(document).on('click','.meee',function(){ 
     console.log('ran btn'); 
     return false; 
    }); 
}); 

Demo

+0

返回false並不總是最好的選擇,請參閱:http://stackoverflow.com/questions/1357118/event-preventdefault-vs-return - 錯誤 – cernunnos

0

或者試試這個:

$(document).ready(function() { 
    $('#containerdiv').click(function(){ 
     console.log('ran div'); 
    }); 

    $('.meee').click(function(e){ 
      e.stopPropagation(); 
      console.log('ran btn'); 
    }); 
}); 

正如chumkiu已經說過,只是使用stopPropagation()

0
$(document).on('click','#btn',function(e){ 
e.stoppropagation(); 
var target = $(e.target); 
if(!target.attr('id') == 'btn'){ 
e.preventDefault(); 
$(target.find("#btn)).trigger("click") 
} 
//any additional logic if the target was of the intended type. 
}); 
相關問題