Как выбрать элементы на основе одного атрибута и исключая элементы с другим атрибутом? - PullRequest
2 голосов
/ 19 января 2012

Я застрял здесь:

Я хочу выбрать все div с атрибутом data-role = "page" , которые не содержат data-internal-page ="true" * атрибут 1006 *.

Это не работает:

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

Может кто-нибудь сказать мне, что не так в синтаксисе?Второй атрибут всегда игнорируется.

Спасибо за помощь!

Ответы [ 3 ]

2 голосов
/ 19 января 2012

Я не использую jqmData, но возможно, что он ищет не все data-attribute с, а только те, которые связаны с jQuery Mobile.Попробуйте использовать обычные селекторы атрибутов:

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

Вот демоверсия: http://jsfiddle.net/Y4mxw/

Обратите внимание, что ваши селекторы будут работать быстрее, если вы не используете tagName:

$('[data-role="page"]').not('[data-internal-page="true"]')
0 голосов
/ 19 января 2012

Сроки ... Я вызывал корректор селектора, но до того, как был назначен второй атрибут. Установка таймаута так показала это:

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

Спасибо всем за помощь!

0 голосов
/ 19 января 2012

Вы можете сделать это с помощью native jquery (без какого-либо плагина / расширения селектора):

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

DEMO

...