jQuery语法没有设置对象属性

时间:2012-11-16 20:44:28

标签: javascript jquery

我的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>

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

7 个答案:

答案 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)

DEMO: http://jsfiddle.net/k4e5z/

答案 3 :(得分:1)

来自docs of the jquery function

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/

答案 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

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

答案 6 :(得分:1)

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

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