1

最初に言いたいのは、私は丸一日かけてこの質問の答えを探しましたが、どこにも見つからなかったということです。ここで誰かが私を助けてくれることを願っています。私はjQueryの経験がまったくないので、しばらくお待ちください。:)

データベースから取得されるデータの動的テーブルを生成する従来の ASP でコードを作成しました。テーブル内の DIV をクリックして、データを非表示にし、入力フィールドを表示できるようにしたいと考えています。私はこれを行うコードを書きましたが、表示される最初の結果に対してのみ実行し、残りは機能しません。クラス名は一意であり、ID も一意ですが、jQuery クリック イベントが 2、3、4 行などで機能することはまだ許可されていません。

これは私が持っているjQueryコードです:

<script>
$(document).ready(function(){
 var taskId = $("div[class*='hide']").attr("id");
 var edittaskId = $("div[class*='show']").attr("id");
   $("#" + taskId).click(function(){
   $("#" + taskId).hide();
   $("#" + edittaskId).show();
    });
});    
</script>

これは私が持っている HTML/ASP コードです:

    <div id="hide_<%=rs("id")%>" class="hide<%=rs("id")%>" align="right"><%=F_task_due_date%></div>
    <div id="show_<%=rs("id")%>" class="show<%=rs("id")%>" style="display: none;">
    <div>
    <input type="text" name="edit_task_due_date" value="<%=F_task_due_date%>" />
    </div>
    </div>
    </div>

前述したように、上記のコードは最初の DIV では完全に機能しますが、表内のそれより下の他の DIV では機能しません。この jQuery コードを取得して、jQuery コードの応答に一致する他の DIV 要素をクリックできるようにし、それらを非表示/表示にするにはどうすればよいですか?

前もって感謝します。

4

1 に答える 1

0

要素のグループから属性、テキスト、html などの値を取得しようとすると、返される値は 1 つだけであり、コレクション内の最初の要素の値になります。

代わりに、イベント ハンドラー内でインスタンスごとに値を処理する必要があります。クラス内で一意の識別子を使用する必要や利点はほとんどありません。

idクラスの一部showを削除する場合は、次のhideように簡単に実行できます

$('.hide, .show').click(function(){
  /* "this" is the element clicked*/
   var taskId=this.id;
   $('#hide_'+taskId, #show_'+taskId).toggle();

});

ID を必要としないより単純なアプローチは次のようになります。

$('.hide, .show').click(function(){      
       $(this).toggle().siblings('.hide,.show').toggle();
});
于 2013-01-26T22:55:59.200 に答える