首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery .wrap()问题

jQuery .wrap()问题
EN

Stack Overflow用户
提问于 2010-11-18 03:47:47
回答 4查看 153关注 0票数 2

我和jQuery有点问题

代码语言:javascript
复制
$(document).ready(function() {
    var foo = $("<div><h1>Bar</h1><p>Hi</p><h1>Baz</h1><p>bye</p></div>");
    foo.filter("h1,h2").map(function(id) {
        $(this).wrap('<span color="red"/>');
    });
    alert(foo.html());
});

此代码输出

代码语言:javascript
复制
<h1>Bar</h1><p>Hi</p><h1>Baz</h2><p>bye</p>

跨度是无处可见的。我做错了什么?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-18 03:52:19

它没有任何效果,因为.filter()会在那个级别过滤元素,你可能需要.find()来获得像这样的后代:

代码语言:javascript
复制
$(document).ready(function() {
    var foo = $("<div><h1>Bar</h1><p>Hi</p><h1>Baz</h1><p>bye</p></div>");
    foo.find("h1,h2").wrap('<span color="red"/>');
    alert(foo.html());
});

You can test it out here。还请注意,对于looping...but,您应该使用.each()而不是.map()。这里没有必要,因为您可以直接调用.wrap()

票数 2
EN

Stack Overflow用户

发布于 2010-11-18 03:51:33

你不想在这里使用filter,你想要使用find。另外,您为什么要使用map

代码语言:javascript
复制
$(document).ready(function() {
  var foo = $("<div><h1>Bar</h1><p>Hi</p><h1>Baz</h2><p>bye</p></div>");
  foo.find("h1,h2").wrap('<span color="red"/>');
  alert(foo.html());
});

Live test

票数 2
EN

Stack Overflow用户

发布于 2010-11-18 03:53:16

首先:您的标记无效(Baz由一个开始的h1和一个结束的h2包装)。但是.map reference说你需要返回值。

代码语言:javascript
复制
$(document).ready(function() {
    var foo = $("<div><h1>Bar</h1><p>Hi</p><h1>Baz</h1><p>bye</p></div>");
    var bar = foo.find("h1,h2").map(function(id) {
        return $(this).wrap('<span color="red"/>');
    });

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4208472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档