首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery Clone修复

Jquery Clone修复
EN

Stack Overflow用户
提问于 2013-06-27 03:52:49
回答 1查看 946关注 0票数 0

所以我得到了这个jQuery克隆插件,它修复了克隆的文本区域和选择的值(复制了克隆的元素的值,包括文本区域和选择)。

代码是这样的

代码语言:javascript
复制
(function (original) {
    jQuery.fn.clone = function () {
    var result           = original.apply(this, arguments),
        my_textareas     = this.find('textarea').add(this.filter('textarea')),
        result_textareas = result.find('textarea').add(result.filter('textarea')),
        my_selects       = this.find('select').add(this.filter('select')),
        result_selects   = result.find('select').add(result.filter('select'));
        //console.log('this',this)
       //console.log('my',this.find('textarea').length,'rsult',this.filter('textarea'),length);

       for (var i = 0, l = my_textareas.length; i < l; ++i)          
            $(result_textareas[i]).val($(my_textareas[i]).val());
       for (var i = 0, l = my_selects.length;   i < l; ++i) 
            result_selects[i].selectedIndex = my_selects[i].selectedIndex;

       return result;
     };
  }) (jQuery.fn.clone);

这太完美了。然而,这些线条

代码语言:javascript
复制
my_textareas     = this.find('textarea').add(this.filter('textarea')),
result_textareas = result.find('textarea').add(result.filter('textarea')),    

我不明白的是,既然我们已经用add选择了this中的所有文本区(稍后我们循环获取值),为什么还要再次add .filter('textarea')呢?

我的观点是

代码语言:javascript
复制
my_textareas     = this.find('textarea'),
result_textareas = result.find('textarea'), 

在没有add(filter..)的情况下应该工作得很好。

filter是不是还有其他原因?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-27 03:59:24

find只获取子代元素。filter只获取顶级元素。

通过使用这两种方法,您可以获得集合中的任何textarea元素以及集合中元素的后代元素。

举个例子:

代码语言:javascript
复制
<div class="abc">
    <textarea id="one"></textarea>
</div>
<textarea class="abc" id="two"></textarea>

如果我们这样做:

代码语言:javascript
复制
$(".abc").find("textarea")

我们的集合将只包含id为"two“的textarea。但是,如果我们这样做:

代码语言:javascript
复制
$(".abc").filter("textarea")

我们的集合将只包含id为"one“的textarea。您发布的代码使用了这两者,这将得到“一”和“二”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17329235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档