我们在对结果集使用find、filter等方法时,会改变结果集。


这样的改变原先结果集的方法被称作destructive jQuery method


jQuery cookbook有例如以下定义:


A destructive operation is any operation that changes the set of matched jQuery elements, which means any traversing or manipulation method that returns a jQuery object, including​​add(), andSelf(), children(), closes(), filter(), find(), map(), next(), nextAll(), not(), parent(), parents(), prev(), prevAll(), siblings(), slice(), clone(), appendTo(), prependTo(), insertBefore(), insertAfter(), replaceAll()​ ​。



详细使用方法例如以下

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
</head>
<body>
<p>Text</p>
<p class="middle">Middle <span>Text</span></p>
<p>Text</p>
<script type="text/javascript" src="jquery-1.11.1.js"></script>
<script type="text/javascript">
alert($('p').filter('.middle').length); // alerts 1
alert($('p').filter('.middle').end().length); // alerts 3
alert($('p').filter('.middle').find('span').end().end().length); // alerts 3
</script>
</body>
</html>




当对​​$('p')​​的结果运行​​filter('.middle')​​时,仅仅有​​<p class="middle">Middle <span>Text</span></p>​​符合结果。

继续对上述操作运行​​end()​​,则​​filter()​​产生的作用被撤销,结果集中包括三个<p>