2012-07-26 72 views
0

兩個click處理函數確定哪些子元素是由父事件處理程序點擊

$('#current_options').on('click', 'td', function(){ 
    $('#product_options_list tbody').css('display', 'none'); 
    $('.sub_options tbody').css('display', ''); 
    var my_id = $(this).parent().find('input').val(); 
    $('#product_options_list thead').css('display', ''); 
    $('#product_options_list tbody#'+my_id).css('display', ''); 
}); 

$('#current_options').on('click', '.icon-minus-sign', function(e){ 
    e.preventDefault(); 
    var rem_id = $(this).parent().find('input').val(); 

    //remove corresponding option values 
    $('#product_options_list tbody#'+rem_id).remove(); 

    //either highlight next options values or hide table header if no other values present   
    $('#product_options_list thead').css('display', 'none'); 
    $(this).parent().parent().remove(); 


}); 

HTML

<table id="current_options" class="table"> 
    <tbody> 
     <tr> 
     <td> 
      Size<i class="icon-minus-sign"></i> 
     </td> 

基本上,我想從如果單擊處理射擊停止對TD的點擊處理程序在td裏面我點擊。

回答

2

我認爲你正在尋找jQuery的stopPropagation(),就像這樣:

$('#current_options').on('click', '.icon-minus-sign', function(e){ 
    .. 
    e.stopPropagation(); 
}); 
2

您需要stopPropagation這樣的:

$('#current_options').on('click', '.icon-minus-sign', function(e){ 
    e.preventDefault(); 
    e.stopPropagation(); //this stops the event from moving up the parents 

    var rem_id = $(this).parent().find('input').val(); 

    //remove corresponding option values 
    $('#product_options_list tbody#'+rem_id).remove(); 

    //either highlight next options values or hide table header if no other values present   
    $('#product_options_list thead').css('display', 'none'); 
    $(this).parent().parent().remove(); 


}); 

如果您使用.on().delegate()然後只是做一個return false;權在你的結尾function

參考:http://api.jquery.com/event.stopPropagation/

相關問題