2012-01-18 18 views
2

私はここにこだわっ:1つの属性に基づいて要素を選択し、別の属性を持つ要素を除外する方法は?

は私がデータ-内部ページ=「true」を属性を運ばない属性データ-役割=「ページ」を持つすべてのdiv要素を選択します。

これは動作しません:

$('div:jqmData(role="page")').not('div:jqmData(internal-page="true")') 

誰かが構文で間違っているものを私に伝えることができますか? 2番目の属性は常に無視されます。

ありがとうございました!

+0

データ内部ページですか?もしそうなら、div:jqmData(data-internal-page = "true")であってはいけません。 –

+0

jquery-mobileはjqmData(some = "thing")を使用します。これによりdata-some = "thing"という結果になります。 – frequent

答えて

2

私はjqmDataを使用しませんが、すべてdata-attributeが検索されず、jQuery Mobileに関連付けられたものだけが検索される可能性があります。通常の属性セレクタを使用してみてください:ここで

$('div[data-role="page"]').not('div[data-internal-page="true"]') 

はデモです:あなたはtagNameをを使用していない場合は、あなたのセレクタは高速に実行されますhttp://jsfiddle.net/Y4mxw/

注:

$('[data-role="page"]').not('[data-internal-page="true"]') 
+0

私はそれについても考えましたが、6つのdivのうち6つが返されました。ここでは1にすべきです。また、あなたの式firebugs:uncaught exception:構文エラー – frequent

+0

2番目のセレクタにコロンを残しました私の例では、デモを試してください:http://jsfiddle.net/Y4mxw/ – Jasper

+0

うん。また動作します。どうも。私は好きではありません:いいえ...あなたはノーを受け取ります:-) – frequent

0

あなたはそれを行うことができますネイティブ jquery(セレクタプラグイン/拡張子なし):

var $divs = $('div[data-role="page"]:not([internal-page="true"])'); 

DEMO

+0

私は間違っていたことを知った...他のスクリプトがデータ内部ページを割り当てられる前に私は呼んでいる – frequent

+0

あなたは "また6"を意味しますか? –

+0

申し訳ありません。私はdiv要素が6つあり、そのうちの5つは2番目の属性を持ち、選択に含めてはいけません。 – frequent

0

タイミング...私は、セレクタcorrecltyを呼んでいたが、第二属性が割り当てられていた前。ヘルプ皆のため

window.setTimeout(function() { 
    console.log($('div:jqmData(role="page")').not('div:jqmData(internal-page="true")').length);  
    },500); 

ありがとう:タイムアウトを設定するので、このことを示したように!

関連する問題