2012-01-18 5 views
2

Я застрял здесь:Как выбрать элементы на основе одного атрибута и исключить те, у кого есть другой атрибут?

Я хочу, чтобы выбрать все дивы с атрибутом данных-ролью = «страница», которые не несут в данных Внутрикадровую-странице = «истинный» атрибут.

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

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

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

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

+0

Это ли внутренняя страница данных? если это так, то не должно быть div: jqmData (data-internal-page = "true"). –

+0

jquery-mobile использует jqmData (some = "вещь"), что приведет к 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 из 6 divs, которые должны быть равны 1. Кроме того, ваше выражение firebugs для: uncaught exception: Ошибка синтаксиса – frequent

+0

Я оставил двоеточие во втором селекторе, который теперь исправлен в моем примере попробуйте демо: http://jsfiddle.net/Y4mxw/ – Jasper

+0

yup. также работает. спасибо. Так как я предпочитаю. Не над: не ... вы получаете кивок :-) – frequent

0

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

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

DEMO

+0

nope. также 6. но я узнал, что не так ... Я звоню перед другим сценарием, назначенным данными-внутренней страницей – frequent

+0

, что вы имеете в виду «также 6»? –

+0

извините. У меня есть 6 элементов div в целом, 5 из которых имеют 2-й атрибут и не должны включаться в выборку. – frequent

0

Хронометраж ... Я звонил в correclty селектор, но до того, как второй атрибут был назначен. Настройка тайм-аута показала это:

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^