2012-01-18 125 views
2

我被困在這裏:如何選擇基於一個屬性的元素並排除具有另一個屬性的元素?

我想選擇與屬性數據角色=「頁面」的所有div不攜帶數據內部頁=「真」屬性。

這不起作用:

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

誰能告訴我什麼是錯的語法?第二個屬性總是被忽略。

感謝您的幫助!

+0

它是數據內頁嗎?如果是這樣,那麼它不應該是div:jqmData(data-internal-page =「true」)。 –

+0

jquery-mobile使用jqmData(some =「thing」),這將導致data-some =「thing」。 – frequent

回答

2

我不使用jqmData但它可能不會查找所有data-attribute s,但只查找與jQuery Mobile相關的。嘗試使用常規屬性選擇:

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

這裏是一個演示:http://jsfiddle.net/Y4mxw/

請注意,您的選擇將運行得更快,如果你不使用的標記名:

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

我也考慮過這個問題,但是我還得到了6個div中有6個返回,它應該只有1個。另外,你的表達式firebugs:未捕獲的異常:語法錯誤 – frequent

+0

我在第二個選擇器中留下了冒號在我的例子中,嘗試演示:http://jsfiddle.net/Y4mxw/ – Jasper

+0

是。也適用。謝謝。因爲我更喜歡。不結束:不......你得到的點頭:-) – frequent

0

你可以這樣做與原生 jquery(沒有任何選擇器插件/擴展名):

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

DEMO

+0

不。也是6.但我發現什麼是錯的......我打電話給另一個腳本之前分配數據內頁 – frequent

+0

你什麼意思是「也6」? –

+0

對不起。我共有6個div元素,其中5個具有第二個屬性,不應包含在選擇中。 – frequent

0

定時...我打電話的選擇correclty,但被分配了第二屬性之前。設置像這樣的超時顯示此:

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

感謝您的幫助大家!

相關問題