问题 如何在jQuery变量中操作HTML?


我试图操纵存储在jQuery变量中的HTML。我想在将变量写入文档之前进行此操作。

所以,我有一个变量定义为:

var sighting = "<div><span class="feed_name"></span></div>";

我想把“你好世界”放进去 span 元件。这是我无法工作的部分:

$(sighting).("span.feed_name").html(name);

然后我将'sighting'变量写入页面:

$(#sightings).append(sighting);

这将HTML放入了目标变量中 <div id="sightings"></div> 页面上的元素。

任何帮助将不胜感激!

谢谢,

标记


2510
2018-02-28 18:23


起源

$(sighting).("span.feed_name").html(name) 甚至不是有效的语法。你想要的 $(sighting).find("span.feed_name").html(name)。 - jpsimons


答案:


我更喜欢这种方法,你可以更好地控制元素,因为它们仍然是对象,因此更容易强制转换为函数。

sighting = document.createElement('div');

然后你就可以操纵它好像它已经是DOM的一部分了

$(sighting).addClass("feed_name").html(name);
$(sighting).appendTo("#sighting");

编辑

嗯......好像我误解了你的问题。我仍然希望使用the来制作元素 createElement() 功能。

sighting = document.createElement('div');
sighting_contents = document.createElement('span');

$(sighting_contents).addClass("feed_name").html(name);
$(sighting).append(sighting_contents);
$(sighting).appendTo("#sightings");

如果你想要的话,你可以将最后三行串联成一条长行...我认为这更具可读性并最终为你提供更多控制权,因为从技术上讲你不应该在你的js中写一堆HTML ,你可以创建元素并附加它们,但是就编写大块标记而言,我认为将元素创建为这样的对象可以提供更大的灵活性。

您还可以以更简单的方式将事件附加到像这样添加的元素:

$(sighting).bind("click", function(event) {
  $(this).fadeOut();
});

11
2018-02-28 18:29



嗨约瑟夫,谢谢你的回复!这听起来像我想要的方法,但是当我写的时候:sighting1 = document.createElement(“<div class ='sighting1'> </ div>”);我得到js错误:错误:未捕获异常:[例外...“字符串包含无效字符”代码:“5”nsresult:“0x80530005(NS_ERROR_DOM_INVALID_CHARACTER_ERR)”位置:“myurl.com 行:47“]任何想法可能是什么?谢谢,马克 - Mark
是的,这是预期的错误。你不需要在函数中使用html: document.createElement('div');  您不能将HTML放入该函数,只能放置要创建的元素的标记。 - JP Silvashy
哈哈,我明白了。有效!谢谢你的帮助。 - Mark
所以我的回答有效吗? HM。 - JP Silvashy


尝试这个:

var sighting = "<div><span class=\"feed_name\"></span></div>",
    $elem = $(sighting).find("span.feed_name").text("hello world").parent();
$("#sightings").append($elem);

parent 需要召唤才能回到外面 div


4
2018-02-28 18:26



大声笑,你先得到它,甚至用相同的标题“试试这个:”:D(我的答案删除) - Tronic
嗨Gumbo,谢谢你的帮助!我最后得到了另一个答案,但你的答案也很有帮助。 - 马克 - Mark