找到&删除通用元素

时间:2017-10-09 14:39:07

标签: javascript jquery

显然,这是一个通用的例子,我将不得不适应一般情况。

我想删除没有ID或类的DOM元素。我可以使用很多方法,但我想知道如果我可以不添加类(例如),如果JQuery可以做这种匹配。

做错了什么,或者是不是可能?

由于

很抱歉这个问题的第一个版本,我覆盖了div结果

$newTest中的结果是它没有删除$last,即最后一段。

$(document).ready(function() {

  var $last = $('#test').children().last(); // Get a generic element
  var $newTest = $('#test').clone(); // Clone my DOM elements

  $newTest.find($last).remove(); 
  // Find and remove the element!
  // This does not work!

  $('#result').html($newTest.html() + '<hr>' + $last.html());

})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="test">
  <p>freddy</p>
  <p>fred</p>
  <p>freddyx</p>
  <p>freddy</p>
</div>
<hr>
<div id="result">

</div>

1 个答案:

答案 0 :(得分:2)

我认为您尝试做的事情的问题在于.clone()

  

From the docs, .clone()

     

描述:创建匹配元素集的深层副本。

此处的关键词是深层复制,这意味着$newTest中的所有内容都与#test不同。 AFAIK,这意味着您在$last中找不到作为指针保存的变量$newTest$last元素在那里不存在。

潜在解决方案?

我不知道这是否适用于您的用例,但由于您已经有一些任意选择器,您可以保存该选择器并使用eval()将该选择器应用于克隆对象:< / p>

&#13;
&#13;
$(document).ready(function() {

  var $last = $($('#test').children().last()); // Get a generic element
  
  var selector = '.children().last()';
  
  var $newTest = $('#test').clone(); // Clone my DOM elements
	
  $newTest.find(eval('$newTest' + selector)).remove();
  // Find and remove the element!
  // This does not work, $newTest is empty!

  $('#result').html($newTest);
  $('#result2').html('<hr>' + $last.html());

})
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div id="test">
  <p>freddy</p>
  <p>fred</p>
  <p>freddyx</p>
  <p>freddy</p>
</div>
<hr>
<div id="result">

</div>
<hr>
<div id="result2">

</div>
&#13;
&#13;
&#13;