4

これを想像してみてください:属性「data-question-id」を持つ複数のdivがあり、このdiv内に属性「has-next-question」を持つ場合と持たない場合がある1つ以上の入力があります。以下の例を参照してください。

<div data-question-id="5">
<input type="radio" has-next-question="true" value="2"> test1
<input type="radio" value="3"> test2
</div>

<div data-question-id="6">
<input type="radio" has-next-question="true" value="5"> test3
<input type="radio" has-next-question="true" value="7"> test4
</div>

最初の div でわかるように、2 つの入力がありますが、1 つには "has-next-question" という属性がありません。私の質問は、attr「data-question-id」を持つ親divを持ち、このdivにattr「has-next-question」を持つ入力が少なくともある入力にクリックイベントをバインドするにはどうすればよいかということです。

私はすでにこれを達成しています:

$(document).on('click', 'div[data-question-id] input', function(e) {
          alert('click');
});

助けはありますか?みんなありがとう

編集:無効なhtml属性であるため、属性「has-next-question」を変更しました。

これを想像してみてください:「test1」をクリックするとイベントがトリガーされますが、「test2」をクリックするとイベントがトリガーされるはずです。これは、attr「data-question-id」を持つ親 div に attr「has を持つ入力が少なくとも 1 つあるためです」 -next-question"、"test1" に対応します。親 div に属性 "has-next-question" を持つ入力がない場合、イベントはトリガーされません。

4

3 に答える 3

3

のためにやったdivので、繰り返します。

div[data-question-id] input[has-next-question]

デモ

于 2013-03-28T18:02:20.653 に答える
1

セレクターを拡張するだけです:

$(document).on('click', "div[data-question-id] input[has-next-question='true']", function(e) {
          alert('click');
});
于 2013-03-28T18:02:39.607 に答える
1

正しいhtmlではありません。has-next-questionは有効な属性ではありません。

しかし、これはうまくいくはずです、

$(document).on('click', 'div[data-question-id] input[has-next-question]', function(e) {
          alert('click');
});

編集:(元の質問の変更後)、

いいえ、そこからセレクターを作成することはできません。jQuery は CSS セレクターを使用しており、子から親へは機能しません。

しかし、あなたはこのようなことをすることができます、

$(document).on('click', 'div[data-question-id] input', function(e) {
       if($(this).parent().find('[has-next-question]').length === 0 ) return;

       // Other code which needs to be executed.
});

つまり、親に属性を持つ子がない場合[has-next-question]、関数から出てきます。

于 2013-03-28T18:03:04.973 に答える