我的jQuery问题我相信很简单,这让我感到疯狂,我无法得到它。
我有一个属性为“content”的对象,我希望能够获取该对象,使用jQuery操作属性“content”,然后使用jQuery创建的新值覆盖该值。
示例:
o.content = "<div><span>hello</span></div>";
$('div', o.content).addClass('test');
此时我希望o.content等于<div class='test'><span>hello</span></div>
我无法为我的生活弄清楚语法。任何帮助都非常感谢。
答案 0 :(得分:2)
解析o.content
中的html,添加该类,将解析后的html追加到新的<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');
答案 1 :(得分:2)
如果你想要的话,这会给你一个字符串<div class="test"><span>hello</span></div>
:
$(o.content).addClass('test').wrap('<div>').parent().html();
答案 2 :(得分:1)
我认为你不能从像这样的字符串中查找元素..我宁愿像下面这样做,
var content = "<span>hello</span>";
content = $('<div/>', {class: 'test'}).html(content)
答案 3 :(得分:1)
,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');
答案 4 :(得分: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>
答案 5 :(得分:1)
为什么不在一行中完成所有工作:
var o = {};
o.content = $( "<div></div>" ) // create element
.addClass('test') // add class
.html( '<span>hello</span>' ); // append content
答案 6 :(得分:1)
o.content = $("<div><span>hello</span></div>");
o.content.addClass('test');
o.content是此示例中的jQuery对象,而不仅仅是一个字符串。这是关于jsfiddle的演示:http://jsfiddle.net/cvbsm/1/