2015-10-23 538 views
24

$("#id").val.length$("#id").val().length有何区别?jQuery中的val.length和val()。长度之间的区别?

当我写$("#id").val.length那么输出是1$("#id").val().length那么输出是写入字符的长度。

是什么解释?

+0

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/length:它只是'($ .fn.val).length' – Bergi

+0

请不要使用[tag:jquery-validate]标签,当问题与jQuery Validate插件完全无关。编辑。 – Sparky

回答

51

$("#id").val返回vallength of a function is the number of parameters the function is expecting函数定义为val采用一个参数(设定器设定的值)的长度为1,而val()将调用函数,并获得返回值和length上它会返回值中的字符数。

正确的使用是$(selector).val().length

我也会推荐VanillaJS的trimval() jQuery的$.trim之前检查length除去开头和结尾的空格使用。

+12

函数长度是函数期望的参数数量非常好!不知道。 (是的,已经测试过)。尝试'(function test(one,two){})length' – AmmarCSE

1

随着$("#id").val你得到函数(源代码)和$("#id").val()这个函数将被调用和执行。

8

让我们来看看这两个代码:

案例1:

$("#id").val.length 

这里.VAL回报方法定义为.val()。和与它一起。长度返回的最大参数的方法数接受(例如2 .toggleClass()

情况2:

$("#id").val().length 

.val()这里返回DOM对象的字符串的方法的评价结果​​即值格式和.length返回返回的长度字符串值。

正确方法:

案例2是使用与.val()长度沿因为它返回的与其相关联的元件的值长度的正确的方法。

+1

'由于方法的数量是1,所以.length与它一起返回1.'这是不正确的。该方法的*参数*的数量为1。 – Agop

+0

@Agop:yup。更新了答案。 –

相关问题