5

目標

<td>チェックボックスのみを含む要素を選択したい。liveまたはのような jQuery 関数でセレクターを使用できるように、単一のセレクター (セレクターの外部でチェーンやロジックを使用しない) でこれを行いたいと考えていますdelegate

より大きな図は、これらの s でクリック イベントをリッスンし、クリック イベントを<td>チェックボックスに渡して、より大きなクリック領域を作成したいということです。<tr>ユーザーがチェックボックスをクリックして見逃したときにアクティブにしたくない別のクリックイベントもあるため、これは重要です。

詳細

シナリオ例で jsfiddle を作成しました: http://jsfiddle.net/ytA3X/

これは私が始めたもので、うまくいきません。つまり、チェックボックスはあるが、チェックボックス以外のものを持たない任意の td 要素を選択します。

$('td:has(:checkbox):not(:has(:not(:checkbox)))')
=> []

:not(:has(...))私のjsfiddleの例で動作します。

:has(:not(...))私のjsfiddleの例で動作します。

:not(:has(:not(...)))常に何も選択していないようです。

チェックボックスだけで td 要素を選択できる別の方法はありますか、それとも何か間違っていますか?

4

4 に答える 4

8

使ってみませんか:only-child

$('td:has(:checkbox:only-child)')...

JSFiddle

于 2012-05-29T18:12:40.513 に答える
2

only-childセレクターを使用できます:

$('td:has(:checkbox:only-child)')

ここでは、マークアップで使用されています。

于 2012-05-29T18:13:24.507 に答える
2

1 つのセレクターで実行しないでください。コードが読みにくくなり、保守とデバッグが非常に難しくなります。

$('td:has(input[type="checkbox"])').filter(function(){
    return $(this).children().length === 1
});

ライブデモ

于 2012-05-29T18:02:19.880 に答える
1

代わりに単純に使用.notして、2 つの別個のセレクターに分割できます。

http://jsfiddle.net/ytA3X/1/

于 2012-05-29T18:06:42.983 に答える