Jquery 如何基于一个属性选择元素并排除具有另一个属性的元素?

Jquery 如何基于一个属性选择元素并排除具有另一个属性的元素?,jquery,jquery-mobile,jquery-selectors,Jquery,Jquery Mobile,Jquery Selectors,我被困在这里: 我想选择属性为data role=“page”的所有div,这些div不带有data internal page=“true”属性 这不起作用: $('div:jqmData(role="page")').not('div:jqmData(internal-page="true")') 谁能告诉我语法有什么问题吗?第二个属性总是被忽略 谢谢你的帮助 我不使用jqmData,但它可能不会查找所有数据属性,而只查找与jQuery Mobile关联的属性。尝试使用常规属性选择器: $

我被困在这里:

我想选择属性为data role=“page”的所有div,这些div不带有data internal page=“true”属性

这不起作用:

$('div:jqmData(role="page")').not('div:jqmData(internal-page="true")')
谁能告诉我语法有什么问题吗?第二个属性总是被忽略


谢谢你的帮助

我不使用
jqmData
,但它可能不会查找所有
数据属性,而只查找与jQuery Mobile关联的属性。尝试使用常规属性选择器:

$('div[data-role="page"]').not('div[data-internal-page="true"]')
下面是一个演示:

请注意,如果不使用标记名,选择器将运行得更快:

$('[data-role="page"]').not('[data-internal-page="true"]')
您可以使用本机jquery(不带任何选择器插件/扩展)完成此操作:


定时。。。我正在调用选择器correclty,但在分配第二个属性之前。设置一个超时,如图所示:

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

谢谢大家的帮助

是数据内部页面吗?如果是这样的话,那么它不应该是div:jqmData(data internal page=“true”)。jquery mobile使用jqmData(some=“thing”),这将导致数据some=“thing”。我也考虑过这一点,但我也得到了返回的6个div中的6个,其中应该只有1个。另外,您的表达式firebugs to:uncaughtexception:Syntax error我在第二个选择器中留下了冒号,这在我的示例中已经修复,请尝试演示:是的。同样有效。谢谢。因为我更喜欢。不超过:不。。。在jQuery中使用等效函数几乎总是比使用伪选择器更快
$('ul li a')
$('ul')慢。子项('li')。查找('a')
$('a:not('some class'))
$('a')。而不是('some class')
慢。每次测试性能差异时,我都发现使用函数更快。还有6。但我发现了问题所在。。。我在另一个脚本指定的数据内部页面之前呼叫抱歉。我一共有6个div元素,其中5个具有第2个属性,不应包含在选择中。选择器工作正常,正如您所描述的,这只是属性未设置的问题。
window.setTimeout(function() {
    console.log( $('div:jqmData(role="page")').not('div:jqmData(internal-page="true")').length );       
    },500);