谈谈jquery的val方法

因子

也许你不知道(至少我之前是不知道的T_T),在jqueryval()方法中是可以直接写函数的。 比如

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form class="" action="index.html" method="post">
<input type="hidden" id="test_input" name="name" value="">
</form>
<script src="http://libs.useso.com/js/jquery/1.9.1/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript">
function test_callback(){
return "hahaha";
}
var $obj=$("#test_input");
$obj.val(test_callback);
alert($obj.val());
</script>
</body>
</html>
<!--more-->

又比如

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>test</title>
</head>
<body>
<form class="" action="index.html" method="post">
<input type="hidden" id="test_input" name="name" value="">
</form>
<script src="http://libs.useso.com/js/jquery/1.9.1/jquery.min.js" charset="utf-8"></script>
<script type="text/javascript">
var $obj=$("#test_input");
$obj.val(function(){
return "4444";
});
alert($obj.val());
</script>
</body>
</html>

缘由

为究其原因,我今天去jquery源码看了下,上面是这么写的:

//略去无关代码
isFunction = jQuery.isFunction( value );
return this.each( function( i ) {
var val;
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
val = value.call( this, i, jQuery( this ).val() );
} else {
val = value;
}
//略去无关代码
}

好啦,又涨新姿势了吧。。


可以看到显示判断是否是一个函数,如果要设置的值是个函数,就会先执行他,然后把它的结果放到值里面返回。

版权说明

本页地址为 https://post.zz173.com/detail/wiP0T4q_QBGGR3OdVI6l7g.html,本文作者为落月
本文采用 署名-相同方式共享 3.0 中国大陆许可协议 ,分享、演绎需署名且使用相同方式共享。转载请务必保留本页网址和作者信息,否则即为侵权。

– EOF –