我只是想知道在将元素附加到DOM之前是否有 clean 实现来获取元素。
示例(w / jQuery):
var html = "<div class = 'test'><div class = 'innertest'>Hello!</div></div>";
var innerDiv = $(html).find('.innertest');
我觉得这是不可能的,但我想看看是否有任何实现允许这样做 - 因为这对于课程和分离来说非常好。
编辑:我想知道这是否可行。我的意思是干净,它没有像字符串替换或黑客攻击一样使用。 这不是我制作它们的情况。如果我可以制作它们,我会随便创建变量。我有一个情况,我有这个html字符串,我想在我将其附加到我的页面之前找到元素并进行操作。
答案 0 :(得分:4)
这就是我最终做到的方式:
var test = $("<div/>");
test.append(html);
test.find(".innertest");
// When I'm ready to append it..
$('#container').append(test);
我不得不修改我的HTML流,但这最终成为一种干净的方法。感谢您的所有建议!
答案 1 :(得分:2)
答案 2 :(得分:1)
var new_element = $(html);
new_element.find('.innertest').doStuffToIt(); //last one isn't an actual method
// and when you're done...
new_element.appendTo('#container');
您无需修改HTML流,因为不需要额外的div
。
我一直在寻找同样的事情(这就是我到达这里的方式),在阅读了你所得到的解决方案之后,我想出了这个。它对我需要的东西很有用。
答案 3 :(得分:0)
var test = $('<div>').addClass('test').append(
$('<div>').addClass('innertest').text('Hello!')
), innerDiv = test.find('.innertest').parent().appendTo('body')
这是在附加到body元素之前进行的操作。这是你的意思吗?如果没有,请指定?
答案 4 :(得分:0)
据我了解,您希望在显示之前编辑某个DOM令您满意,就像您操作当前在显示中的DOM一样。
我宁愿建议为此做一个解决方法,我为了类似的目的多次使用
修改强> 要解决可能闪烁的问题,你可以做另外一件事。
如果我理解你的问题是错误的,请告诉我。
答案 5 :(得分:0)
我相信你现在拥有的东西会起作用。例如,要更改内部div
中的文本,您可以执行以下操作:
var html = '<div class="test"><div class="innertest">Hello!</div></div>';
$(html).find(".innertest").text("Goodbye!");
答案 6 :(得分:0)
如果将一串有效的HTML传递给jQuery()
,它将返回一个jQuery对象,并重新创建DOMElements。然后,您可以在以后将该对象附加到正文,即:
var newDiv = $("<div class='test'><div class='innertest'>Hello!</div></div>");
var innerDiv = newDiv.find('.innertest');
innerDiv.css('background-color', 'blue');
$('body').append(newDiv);
答案 7 :(得分:0)
如果您有xml或xhtml,可以使用jQuery操作它,如下所示:
var html = "<div class='test'><div class='innertest'>Hello!</div></div>";
var domFragment = $(html);
domFragment.find('.innertest'); //More jQuery...
创建一个片段来操作也非常适合xml POST / GET响应。