0

2つのクリック処理機能

$('#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

私はあなたが次のstopPropagation()ようなjQueryを探していると思います:

$('#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 に答える