2013-07-16 79 views
1

我是编程新手,我发现这个代码有点混乱。我知道选择带有文本类型的所有输入字段的行循环遍历每个字段。

那么为什么它使用$(this),因为它已经做了一个选择,这是所有输入字段的类型文本。

$('#combine').click(function() { 
    var combined_text = ""; 
    $('input[type="text"]').each(function() { 
     combined_text += $(this).val() + ' '; 
    }); 
    alert(combined_text); 
}); 
+1

'的每个()'返回选择器匹配的元件的阵列,但是在括号内的函数在每一个上运行单独,因此需要'this'来指定每个元素。请访问jquery网站并阅读文档 - 这一切都覆盖得很好。 – Archer

+0

@Archer准确地。你应该加上这个答案:) –

回答

1

里面的each()回调函数,this指DOM元素,而不是一个jQuery包裹元件。

所以当你需要访问jQuery方法时,你需要用$(this)来包装它。

防爆

如果你说this.value,它会给循环

+0

首先,你需要解释一下'.each()'是一个循环,这是OP不理解的。 OP可能甚至不知道回调函数是什么。 –

4

From docs directly

的。每()方法的目的是使DOM循环结构简洁内部元素的值并且不太容易出错。当它调用它遍历作为jQuery对象一部分的DOM元素时。每次回调运行时,都会从当前循环迭代开始,从0开始。更重要的是,回调在当前DOM元素的上下文中触发,因此关键字this指的是元素。

而且

要访问一个jQuery对象,而不是常规的DOM元素,使用$(本)。

Some good explanation here

1

使用.each功能开始通过匹配元素的循环。

$(this),指的是当前元素,属于匹配元素组!

-1

使用$(这)让你的$( '输入[类型= “文本”]')==>在段落

0

eachjQuery loop function,所以,每each适配体内部的所有输入的文本会考虑jQuery的单个对象。如果你使用JavaScript那么你可以使用this.value但在这里你与jQuery打得那么你必须遵循jQuery rules.因为,valjQuery function获取当前object value因此你必须使用$(this)。因为$将更改thisjQuery Object。:)

in JavaScript we can get object value by 'this.value();' in loop

in jQuery we can use above code but right baby is '$(this).val();'

相关问题