有没有一种方法可以在jQuery中只选择匹配的元素而不选择它们的子元素
Is there a way to only select matched elements but not their children in jQuery?
我想选择所有具有属性magic的元素。但我不喜欢任何没有名为magic的属性的孩子。
所选元素不应根据属性为magic的父元素更改其顺序。
例如,
我有这样一个HTML:
<div magic="row">
<div magic="inputWrapper">
<input magic="input"></input>
<input magic="input"></input>
</div>
<div>
<div class="row">
<div>
<button magic="write">Write</button>
</div>
<div>
<button magic="delete">Delete</button>
</div>
<div>
<button magic="new">New</button>
</div>
</div>
</div>
</div>
我想要获得的是:
<div magic="row">
<div magic="inputWrapper">
<input magic="input"></input>
<input magic="input"></input>
</div>
<button magic="write">Write</button>
<button magic="delete">Delete</button>
<button magic="new">New</button>
</div>
这是一项只使用选择器的简单任务,还是应该使用循环等?
我想不出用选择器做这件事的方法。你可以循环遍历每个元素,如果它没有魔法属性,那么就用它的子元素替换它:
$('*').each(function(){
var $this = $(this);
if( typeof $this.attr('magic') === 'undefined' ){
$this.replaceWith( $this.find('*') );
}
});
由于它使用了everything选择器(*),因此最好提供一个父元素。此外,使用数据属性将更具语义:
$('#parent').find('*').each(function(){
var $this = $(this);
if( !$this.data('magic') ){
$this.replaceWith( $this.find('*') );
}
});
相关文章:
- Webdriver.io pageObject模式-通过传递参数来定义元素选择器
- 使用元素选择器向Object添加函数
- j查询未来元素选择器
- 是否存在jQuery元素选择库的最小化版本
- Jquery动态元素选择器
- 为Select元素选择ONCHANGE
- 如何通过元素选择器获取tinyMCE编辑器实例
- 引导模式元素选择
- 下拉元素选择和 JS 调用不起作用
- 如何在 Edge Animate 中使用类元素选择器绑定 ElementAction
- 停止 Edge 浏览器尝试跨元素选择单词
- jQuery在以下选择器中引用初始元素选择器
- 编写一个类似jQuery的JS元素选择器
- 并行元素选择器
- 带有元素选择器的jQuery get()函数
- 如何设置为元素选择的属性并从其余部分移除属性
- Jquery Html元素选择器
- Jquery元素选择
- 如何使用Javascript防止HTML元素选择选项中的冲突
- 在IE上组合了活动状态伪类和相邻元素选择器