0

两个点击处理函数

$('#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 内 i 上的单击处理程序,我想停止触发 td 上的单击处理程序。

4

2 回答 2

2

我认为您正在寻找 jQuery 的stopPropagation(),如下所示:

$('#current_options').on('click', '.icon-minus-sign', function(e){
    ..
    e.stopPropagation();
});
于 2012-07-26T21:48:03.420 回答
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/

于 2012-07-26T21:49:32.913 回答