1

だから私は次の問題があります。チェックボックスのテーブルに 2 つのイベントを追加しようとしています。

html の例を次に示します。

<body>
<div id='container'> //static element, everything beyond this element is dynamic
 <div id='pane_x'>
  <div id='bottom_x'>
   <div id='bottom_left_x'>
    <div id='results_x'>
     <div id='list_x'>
      <div id='table_1'>
       <table>
        <tbody>
         <tr>
          <td>
           <input type='checkbox' name='blah' id='blah_obj.id_x' class='blahblah'>
          </td>
         </tr>
        </tbody>
       </table>
      </div>
     </div>
    </div>
   </div>
  </div>
 </div>
</div>

うまくいけば、プレフィックスセレクター [id^='blah_'] を使用してチェックボックスを選択しようとしています。最初のペイン (つまり、pane_0) でコードを動作させることはできますが、pane_1 以降では起動しません。

jquery(document).on("change", "[id^='blah_" + obj.id + "']", function() {
//code here
});

html のおおよその見積もりを作成しただけなので、ネスト エラーがある可能性があります。奇妙なことに、デイジー チェーン .children() ステートメントを使用してそれらを見ることができますが、入力要素を選択することはできません。

コメントはこのセクションと同じコード ブロックをサポートしていないため、ここに追加します。

jquery(document).on("change", ".checked", function() {
 var ids = jquery(this).attr("id").split("_");
 if (ids[0] === "blah")
  //do code
 }
});

明確にするためにIDを編集しました。id 構造体は「blah_」obj.id「_」個々のイテレータです。したがって、ペイン 0 の 3 つのチェックボックスは次のようになります: blah_0_0 blah_0_1 blah_0_2

このページには、これらの関数でターゲットにしたくないチェックボックス リストのセットが他に 2 つあります。そのため、プレフィックス セレクターを使用しています。

4

2 に答える 2

1

セレクターを使用するポイントは、 ifが定義されている場合startsWithに行っているように、値全体を完成させようとすることではありません。obj.idobj.id

以下は、既存または将来のいずれかでinput始まる ID を持つすべてを検索します。'blah_'

jQuery(document).on("change", "input[id^='blah_']", function() {
//code here
});

それらがすべて共通のクラスを共有している場合、クラスをセレクターとして使用することはさらに理にかなっています

jQuery(document).on("change", "input.blahblah", function() {
//code here
});

また、独自のコードで別の方法で定義していない限り、タイプミスがjqueryあることに注意してくださいjQuery

同じチェックボックス ID を繰り返している場合、重要なメモID はページ内で繰り返されない場合があります。定義上、一意である必要があります

于 2012-12-16T20:58:38.990 に答える
0

ここで別のサンプル:

$("body").on({
    click:function(){
        // where $(this) is the current item changed
    }
}, "input.blahblah");

</p>

于 2012-12-16T21:07:42.950 に答える