1

我相信我的 jQuery 问题非常简单,这让我发疯了,我无法理解。

我有一个具有属性“内容”的对象,我希望能够获取该对象,使用 jQuery 操作属性“内容”,然后用 jQuery 创建的新值覆盖该值。

例子:

o.content = "<div><span>hello</span></div>";
$('div', o.content).addClass('test');

此时我希望 o.content 等于<div class='test'><span>hello</span></div>

我无法为我的生活弄清楚语法。非常感谢任何帮助。

4

7 回答 7

2

在 中解析 html o.content,添加类,将解析后的 html 追加到 new<div>中,获取新 div 的 html:

o.content = "<div><span>hello</span></div>";
var el = $(o.content).addClass('test');
o.content = $("<div>").append(el).html();

编辑:这假设您o.content仍然想要包含一个字符串,而不是一个 jQuery 对象。在这种情况下,它更简单:

o.content = $(o.content).addClass('test');
于 2012-11-16T20:50:58.313 回答
2

<div class="test"><span>hello</span></div>如果这是您想要的,这将为您提供一个字符串:

$(o.content).addClass('test').wrap('<div>').parent().html();
于 2012-11-16T20:51:55.640 回答
1

我不认为你可以从这样的字符串中查找元素。我宁愿像下面那样做,

var content = "<span>hello</span>";
content = $('<div/>', {class: 'test'}).html(content)

演示:http: //jsfiddle.net/k4e5z/

于 2012-11-16T20:51:30.357 回答
1

jquery 函数的文档中context必须是

用作上下文的 DOM 元素、文档或 jQuery

您的上下文 ( o.content) 是一个字符串。此外,jQuery 函数不能选择整个上下文,它只能选择该上下文中的元素。

试试这个:

// make o.content a jquery element, not a string
o.content = $("<div><span>hello</span></div>");

// select on something inside the context (inside the div), not the div itself
$('span', o.content).addClass('test');

http://jsfiddle.net/JfW4Q/

于 2012-11-16T20:54:21.727 回答
1

你想要以下

o.content = "<div><span>hello</span></div>";
// Create a jQuery object you can call addClass on
var docFragment = $(o.content);
docFragment.addClass('test');
// Since there's no outerHTML in jQuery, append it to another node
var wrapper = $('div');
docFragment.appendTo(wrapper);
// The HTML of the wrapper is the outerHTML of docFragment
console.log(wrapper.html()); // outputs <div class='test'><span>hello</span></div>
于 2012-11-16T20:58:39.570 回答
1

为什么不在一行中完成所有操作:

var o = {};
o.content = $( "<div></div>" )     // create element
    .addClass('test')              // add class
    .html( '<span>hello</span>' ); // append content

小提琴:http: //jsfiddle.net/kboucher/eQmar/

于 2012-11-16T20:59:43.733 回答
1
o.content = $("<div><span>hello</span></div>");
o.content.addClass('test');

在这个例子中,o.content 是一个 jQuery 对象,而不仅仅是一个字符串。这是关于 jsfiddle 的演示:http: //jsfiddle.net/cvbsm/1/

于 2012-11-16T21:00:32.630 回答