问答详情
源自:3-1 jQuery的属性与样式之.attr()与.removeAttr()

就是这个问题$("input:eq(2)").attr('value',function(i, val)

我以提问的方式,说说我的理解,希望评论指出我的错误。

<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!


所以就这样理解吧。

提问者:Mr_Jp黎 2017-07-12 22:49

个回答

  • 笑出强大_0
    2017-07-20 16:10:52
    已采纳

    大概像你说的一样,

        	$("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;
        	}
        	)

    可以在代码区测试一下。相信你能理解。加油。

  • 桃子橙子柚子
    2017-09-13 15:11:05

    看不懂耶

  • 慕村0925817
    2017-07-14 14:17:25

    我还是初学者