0

检查下面的代码:

<script>
 var cls = ['', 'a', 'a b', 'a b c'];
var divs = $('div.wrap').children();

请注意,children() 执行破坏性操作,即它构造一个新的 jquery 对象

var appendClass = function() {
 divs.append(function() {
return '<div>' + (this.className || 'none') + '</div>';
});
};

appendClass();

$('button').bind('click', function() {
var tc = this.className || undefined;
divs.toggleClass(tc);
appendClass();
});

$('a').bind('click', function(event) {
event.preventDefault();

//(children is a destructive method which have constructed new jquery object so what is the use of using empty method on the upcoming statement) 
divs.empty().each(function(i) {
this.className = cls[i];
});
 appendClass();
});

那么在div变量上使用空方法有什么用?

4

1 回答 1

0

Empty()方法:

此方法不仅删除子(和其他后代)元素,还删除匹配元素集中的任何文本。这是因为,根据 DOM 规范,元素中的任何文本字符串都被视为该元素的子节点。

用例

  1. 您要清除所有现有数据并附加新数据。
  2. 对于您操作数据的模板很有用。

     divs.empty().each(function(i) {
    this.className = cls[i];
    });
    

上面的代码是无用的,因为 div 被清空,之后如果你循环也不会找到任何元素。我不知道你有什么标记,但上面的代码不会有用。

于 2013-02-04T09:49:58.230 回答