13

私がやりたいことは、特定の ID の下にあるものを除いて、ドキュメント上のすべての入力ボタンを選択することです。

例:

<body>
<input type="button">

<div id="something">
     <input type="button">
</div>
<div id="something2">
     <input type="button">
</div>


<input type="button">
<input type="button">
<input type="button">
</body>

たとえば、 「何か」の下に<div>あるものを除いて、すべての入力を選択したいと思います。id

私が試したこと:

1) $('input[type="button"]:not(:parent(#something))').addCSS();

2) $('input[type="button"] :not(#something input[type="button"])')

および他の同様のアプローチ

4

3 に答える 3

24

このように(比較的効率的に)行うことができます。

$("input[type=button]").filter(function() {
    return $(this).closest("#something").length == 0;
});

まず、すべての要素を取得してから、親としてのinput[type=button]要素を削除します。#something

別の可能性は次のとおりです。

$("input[type=button]").not("#something input[type=button]")

どちらがより効率的かを確認するには、両方をテストする必要がありますが、どちらも機能します。

両方の動作デモ: http://jsfiddle.net/jfriend00/fjxDb/

于 2012-08-12T23:36:29.057 に答える
12

:not の前のスペースを削除するだけで済みました。

$('input[type="button"]:not(#something input[type="button"])')

これは古い質問であることは知っていますが、Googleで最初に表示され、受け入れられた回答に示されているようにjqueryの .not() を使用することは常にオプションではありません。

于 2016-04-28T10:51:54.853 に答える
2

多分これはうまくいきます:$(":not(#something) input[type=button]")

于 2012-08-12T23:32:23.290 に答える