如何根据一个属性选择元素并排除那些具有其他属性的元素?

时间:2012-01-18 20:50:58

标签: jquery jquery-mobile jquery-selectors

我被困在这里:

我想选择属性 data-role =“page”的所有div,它们不带 data-internal-page =“true”属性。

这不起作用:

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

有人能告诉我语法有什么问题吗?第二个属性总是被忽略。

感谢您的帮助!

3 个答案:

答案 0 :(得分:2)

我不使用jqmData但它可能不查找所有data-attribute,而只查找与jQuery Mobile相关联的$('div[data-role="page"]').not('div[data-internal-page="true"]') 。尝试使用常规属性选择器:

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

以下是演示:http://jsfiddle.net/Y4mxw/

请注意,如果您不使用tagName:

,您的选择器将运行得更快
{{1}}

答案 1 :(得分:0)

您可以使用 native jquery(没有任何选择器插件/扩展名)来执行此操作:

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

<强> DEMO

答案 2 :(得分:0)

计时...我正在调用选择器,但是在分配了第二个属性之前。像这样设置超时表明了这一点:

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

感谢大家的帮助!