0

現在次のようになっているコードをリファクタリングしています。

$$('#wrapper > div').each(function(e){ 
    if((e.id!='header') && (e.id!='footer') && (e.id!='content')){
        // various other stuff here
    }
});

最初のセレクターを切り替えて、IDを1行にチェックしたいと思います。これは、次の行に沿ったものです。

$$('#wrapper > div[id!=header]', '#wrapper > div[id!=content]', '#wrapper > div[id!=footer]')

ただし、複数のセレクターは機能していませんが、各セレクター自体は正常に機能します。これが構文の問題なのか、プロトタイプのドキュメントでこれが機能するはずだと言っているのかはわかりませんが、セレクターを追加するとすぐに機能しません。

これが機能することを確認するには:

$$('#wrapper > div[id!=header]')

そしてこれは機能します:

$$('#wrapper > div[id!=footer]')

しかし、これはどちらも選択できません(エラーをスローせずに)

$$('#wrapper > div[id!=header]', '#wrapper > div[id!=footer]')
4

2 に答える 2

2

セレクターを相互に追加するだけです。次のフィドルdiv[attr selector 1][attr selector 2] の例を参照してください。

最初の試みの問題。つまり、セレクターを区切るためにコンマを使用すると、セレクターはOR-ingになります。したがって、3つすべてを指定しても、他のそれぞれは、他が除外しようとしているものを返します。

于 2012-05-14T13:37:08.053 に答える
2

2つのコードスニペットは根本的に異なることを行います。トップスニペットに相当するものは次のとおりです。

$$('#wrapper > div[id!=header][id!=footer][id!=content]')

id「」であるものは「でfooterはない」の下で選択されるため、セレクターは、を含むすべてのdivを選択しますheader

于 2012-05-14T13:37:26.597 に答える