0

現在、エピソードと呼ばれる情報のテーブルがあります。このテーブルには、タイトル、放送日、エピソード番号、プロットで構成されるフィールドがあります。JavaScript を使用してフィールドのクローンを作成し、フィールドを削除します。私の問題は、削除機能がタイトル、放送日、エピソード番号のみを削除することです。ただし、プロット ボックスは残ります。私が言える問題は、プロットが別の<tr></tr>タグでラップされていることです。両方のセットを削除する削除機能を取得するにはどうすればよいですか?

ここにテーブルがあります

<table id="template" style="display: none">
<tr class="line">
    <td width="50%">
    <label><?php _e('Episode Title'); ?></label>
    <p>
      <input type="text" name="episode_title[]" id="episode_title[]" value="" class="title regular-text" style="width:100%;" />
    </p>    
    </td>

    <td width"10%">        
    <label><?php _e('Airdate'); ?></label>
    <p>
      <input type="text" name="episode_airdate[]" id="episode_airdate[]" value="" class="airdate regular-text" style="width:100%" />
    </p>
    </td>

     <td width="10%">        
    <label><?php _e('Season:'); ?></label>
    <p>
          <?php

            for($i=1; $i<=50; $i++)
                $season_nums[]=$i;

            echo '<select name="episode_season[]" select id="episode_season[]" class="season regular-text" style="100%">';
                echo '<option value="">' . __("Season" ) . '</option>';
                foreach($season_nums as $season_num){
                    $selected = '';
                    echo '<option value="' . $season_num . '" ' . $selected . '>' . $season_num . '</option>';
                }
            echo '</select>';
            ?>
    </p>
    </td>

    <td width="10%">        
    <label><?php _e('Episode:'); ?></label>
    <p>
      <input type="text" name="episode_number[]" id="episode_number[]" value="" class="number regular-text" style="width: 100%" />
    </p>
    </td>



    <td width="10%" class="commands">
        <a rel="delete" class="button">-</a> <a rel="add" class="button">+</a>
    </td>


</tr>

<tr class="line2"> 
   <td width="100%">       
    <label><?php _e('Plot:'); ?></label>
      <textarea name="episode_plot[]" id="episode_plot[]" class="plot regular-text"value="" cols="100%" rows="10" tabindex="4" ><?php echo $_POST['episode_season'] ?></textarea>
    </td>
</tr>

ここにJavaScriptがあります

        // Delete the "-" button in first row
    $('#attachments tr:first-child .commands a[rel="delete"]').remove();
}

function items_add()
{
    obj = $('#template tr').clone().appendTo('#attachments');
    lines++;

    if (arguments.length > 0) {
        options = arguments[0];

        $('.title', obj).val( options.title );
        $('.airdate',   obj).val( options.airdate );
        $('.season',   obj).val( options.season );
        $('.number',   obj).val( options.number );
        $('.plot',   obj).val( options.plot );
    }
}

$('#attachments').delegate('.commands a', 'click', function()
{
    var action = $(this).attr('rel');
    var confirm_delete = true;

    // Add action
    if ('add' == action) {
        items_add();
    }

    // Delete action
    if ('delete' == action) {
        // La TR en la tabla
        var oTr = $(this).parent().parent();
        var episode_name = $('.title', oTr).val();
        var episode_airdate = $('.airdate', oTr).val();
        var episode_season = $('.season', oTr).val();
        var episode_number  = $('.number', oTr).val();
        var episode_plot  = $('.plot', oTr).val();


        if (episode_name != '' || episode_number != '' || episode_plot != '') {
            if ( !confirm('Are you sure you want to delete ' + episode_name + '?') ) {
                confirm_delete = false;
            }
        }

        if (confirm_delete) {
            oTr.remove();
            lines--;
        }
    }
});

$(document).ready(function()
{
    items_init();
});

})(jQuery);

あなたの助けは大歓迎です

4

2 に答える 2

1

考え:

PHPで次のような乱数を生成します

$rand = time() * rand();

行の行にエコーします

<tr class="line" data-row="<?php echo $rand; ?>">

<tr class="line2" data-row="<?php echo $rand; ?>">

誰かがリンクをクリックしたときに削除機能を使用する

var oTr = $(this).closest("tr");
var data-row =$(oTr).attr('data-row');
 $('tr[data-row=' + data-row + ']').remove();

アイデアは、trをlineおよびline2クラスで識別するための一意の文字列を持つことです

于 2012-04-19T18:25:25.100 に答える
1

この行を変更

var oTr = $(this).parent().parent();

var oTr = $(this).closest("tr");

次に使用しますoTr.remove()

于 2012-04-19T18:18:20.840 に答える