有没有一种不用复制和粘贴就多次使用Jquery的.unwrap()的方法?如果它能够接受一个论点或类似于:.unwrap(4)之类的东西,那就太好了,但是它没有。有更聪明的解决方案来实现以下目标吗?
$(".foo a").unwrap().unwrap().unwrap().unwrap();<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul>
<li class="foo">
<div>
<ul>
<li>
<div>
<a href="#">Link 1</a>
</div>
</li>
</ul>
</div>
</li>
<li class="foo">
<div>
<ul>
<li>
<div>
<a href="#">Link 2</a>
</div>
</li>
</ul>
</div>
</li>
<li class="foo">
<div>
<ul>
<li>
<div>
<a href="#">Link 3</a>
</div>
</li>
</ul>
</div>
</li>
</ul>
发布于 2015-05-07 22:29:29
你可以写你自己的:
$.fn.unwrapTimes = function(times){
var unwrapCount = times;
return this.each(function(){
var $this = $(this);
for(var i=0;i<unwrapCount;i++){
$this.unwrap();
}
});
};小提琴
显然,应该更改名称,但逻辑是合理的。
发布于 2015-05-07 22:35:16
foo的孩子(.foo > *)
(这将是元素的祖先)。
使用addBack来包含元素本身。
$('.foo a').parentsUntil('.foo > *').addBack().unwrap();小提琴1
如果您想要一个打开对象n次数的泛型函数,则这样做:
$.fn.unwrapN = function(n) {
while(n--) $(this).unwrap();
return $(this);
}小提琴2
发布于 2015-05-07 22:40:05
可以使用html()
$('.foo').html($('.foo a'));但是,这种方法不能扩展到多个实例,但可以对多个实例使用html(fn)
$('.foo').html(function(){
return $(this).find('a')
});演示
https://stackoverflow.com/questions/30112665
复制相似问题