我以提问的方式,说说我的理解,希望评论指出我的错误。
<form> <input type="text" value="设置value" /> <input type="text" value="获取value"/> <input type="text" value="回调拼接value" /> <input type="text" value="删除value" /> </form> <script type="text/javascript"> //i是当前选择元素的索引值,val是当前选择元素的当前属性值 $("input:eq(2)").attr('value',function(i, kengdie){ return '通过function设置' + kengdie }) </script>
先把多余的删掉,然后把原本的变量val改成kengdie,对!
1、首先,$("input:eq(2)").attr('value',function(....))设置(替换)当前input的value值为function(...)
2、function(i,kengdie),i就是指当前($("input:eq(2)"))的索引值,kengdie这个变量是获取当前的value值,因为.attr('value',function(....))目的是要设置value值,所以function(i,kengdie)就是获得当前的value值(据说是回调函数???)
3、return '通过function设置' + kengdie。容易理解。
所以结果是:“通过function设置回调拼接value”。
好像input 的长度不够啊真坑爹,误以为看到的是“通过function设置回调拼接val”,其实把文字拉右边就能看到ue了。加上坑爹的变量名val!误以为是变成val!
所以就这样理解吧。
大概像你说的一样,
$("input:eq(2)").attr('value', function(i, val){ return '通过function设置' + val } )
attr的第一个参数是获取属性名,第二个参数是利用函数改变属性值。
你这样看这个function,传入两个参数,第一个参数接收eq的索引值,进行定位,测试:因为当你把eq(2)改为eq(1)时,对应的第二条input就会显示为通过function设置XXX。
第二个参数val,就如你所说的kengdie,接收--当前attr获取的属性名--的属性值,用--隔开看起来更容易理解一点
最后用return返回添加的内容和属性值
eg:你会更好理解用函数改变属性值,没有传参,理解起来就没有那么困难。
首先,第三条input需要加一个name
<input type="text" value="回调拼接value" name="ddddd"/>
(把name的属性值设为value的属性值)
$("input:eq(2)").attr('value', function(){ return this.name; } )
可以在代码区测试一下。相信你能理解。加油。
看不懂耶
我还是初学者