在将DOM元素添加到文档之前对其进行操作

时间:2009-09-19 04:32:12

标签: javascript jquery dom

我只是想知道在将元素附加到DOM之前是否有 clean 实现来获取元素。

示例(w / jQuery):

var html = "<div class = 'test'><div class = 'innertest'>Hello!</div></div>";

var innerDiv = $(html).find('.innertest');

我觉得这是不可能的,但我想看看是否有任何实现允许这样做 - 因为这对于课程和分离来说非常好。

编辑:我想知道这是否可行。我的意思是干净,它没有像字符串替换或黑客攻击一样使用。 这不是我制作它们的情况。如果我可以制作它们,我会随便创建变量。我有一个情况,我有这个html字符串,我想在我将其附加到我的页面之前找到元素并进行操作。

8 个答案:

答案 0 :(得分:4)

这就是我最终做到的方式:

var test = $("<div/>");
test.append(html);

test.find(".innertest");

// When I'm ready to append it..

$('#container').append(test);

我不得不修改我的HTML流,但这最终成为一种干净的方法。感谢您的所有建议!

答案 1 :(得分:2)

你看过DOM DocumentFragments吗?

答案 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一样。

我宁愿建议为此做一个解决方法,我为了类似的目的多次使用

  1. 首先追加 DIV /元素,立即隐藏
  2. 在您自由编辑后,您可以随心所欲。
  3. 执行任何编辑 / CSS应用程序/ DOM Manip,然后取消隐藏元素 或将其删除如果您只是想要一些数据它。
  4. TA-哒!
  5. 修改 要解决可能闪烁的问题,你可以做另外一件事。

    1. 创建一个空DIV并隐藏它(隐藏一个空div可能不会导致闪烁,因为它会发生得非常快)。
    2. 然后附加您想要的DOM对象(当它被隐藏时)
    3. 然后对它施以怜悯。
    4. 如果我理解你的问题是错误的,请告诉我。

答案 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响应。