gpt4 book ai didi

JQuery:查找/过滤上下文中的属性

转载 作者:行者123 更新时间:2023-12-01 00:20:42 25 4
gpt4 key购买 nike

我一直在尝试几种不同的方法来过滤 html 中特定节点的查找。

这是一些示例 html:

<body>
<div ui:component="component1"></div>
<ul ui:component="component2"></ul>
<article ui:component="component3"></article>
</body>

我已经通过简单的过滤器成功地匹配了项目:

// returns div, ul, article
$('[ui\\:component]').each();

但是,当我开始根据父节点过滤它时,它开始对我失败。我试过:

$('[ui\\:component]', $('body'));   // returns []
$('body').find('[ui\\:component]'); // returns []
$('body').filter('[ui\\:component]'); // returns []
$('body').find('*').filter('[ui\\:component]'); // returns []

我在这里做错了什么?起初我以为它可能是 ui 命名空间,但将其添加到 html 文档或正文中似乎没有任何意义。非常感谢帮助

完整来源如下:

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head>
<body>
<div ui:component="component1"></div>
<ul ui:component="component2"></ul>
<article ui:component="component3"></article>
</body>
<script type="text/javascript">
$(document).ready(function() {

// returns div, ul, article
console.log($('[ui\\:component]'));

// these all return nada
console.log($('[ui\\:component]', $('body')));
console.log($('body').find('[ui\\:component]'));
console.log($('body').filter('[ui\\:component]'));
console.log($('body').find('*').filter('[ui\\:component]'));
});
</script>
</html>

最佳答案

我猜这是因为当你这样做时:

$('[ui\\:component]')

...Sizzle 将选择器传递给浏览器的 document.querySelectorAll() 方法(如果可用),有效地绕过了 Sizzle。

而当您执行 .find().filter() 时,就会利用 Sizzle。

所以我猜想 Sizzle 不支持选择器中的某些内容,但 querySelectorAll() 支持。也许是:

我想你会发现:

document.querySelectorAll('[ui\\:component]').length

还有这个:

$('[ui\\:component]').length

...会给你类似的结果

编辑:

如果有帮助的话,连字符似乎效果很好。

$('body').find('[ui-component]').length

HTML

<ul ui-component="component2"></ul>

关于JQuery:查找/过滤上下文中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3910332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com