gpt4 book ai didi

javascript - 为什么 jQuery.val() 的行为与 jQuery 的其余部分不同

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:27:13 24 4
gpt4 key购买 nike

通常在 jQuery 无法使用其选择器找到匹配元素的情况下,默认值绝不是异常(exception),而是缺少操作。

我的理解是这是设计使然,以确保缺少元素不会导致错误情况。但是我发现 jQuery.val() 没有表现出同样的行为。如果所选元素不存在,jQuery.val() 将返回 undefined 而不是空字符串(这与我预期的框架的其余部分保持一致)。

那么为什么 jQuery.val() 是框架其余部分的异常(exception),什么是改变这种行为的最佳方式?

最佳答案

这里的关键是 jQuery 方法的可链接性。 A jQuery method doesn't return undefined when a selector doesn't match anything because it would break the chain.考虑:

$( '#doesntExist' ).addClass( 'foo' ).fadeIn();

如果不匹配任何内容的选择器将返回 undefined 它会破坏链,因为 undefined 没有自己的任何方法。现在,无论是否找到元素,每个方法都会执行(并且什么都不做)。

.val() 另一方面是不同的,因为它的目的是返回元素的值。与许多其他 jQuery 方法不同,它根本不链接,因为方法必须返回一个 jQuery 对象才能链接。例如,$( '#foo' ).val().addClass( 'bar' ) 不起作用无论元素 #foo 是否存在或不是

在这种情况下,让 .val() 返回一个空字符串将不再符合可链接方法,因为当找不到该元素时,其他方法也不会返回一个空字符串,并且返回 undefined 不会破坏可链接性,因为该方法一开始就没有链接。

(顺便说一句,对于每个返回值的方法都是如此,比如 .css().data()。)

通常了解元素的值是否为空或元素是否根本不存在更有用,但如果您希望始终返回一个字符串,您可以添加自己的方法:

$.fn.stringVal = function() {
return( this.val() || '' );
};

关于javascript - 为什么 jQuery.val() 的行为与 jQuery 的其余部分不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11337070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com