为何jQuery点击事件返回对象而非data-id的数值1?求排查错误
问题原因及修正方案
嘿,这个问题很典型,我来帮你捋清楚~
你点击后弹出对象而非数值1的问题,根源就在这行代码里:
alert($($(this).data("id")));
错误原因
$(...)是jQuery的核心构造函数,它的作用是根据传入的选择器、DOM元素或其他参数创建一个jQuery对象。你这里把$(this).data("id")获取到的数值1又套了一层$(),相当于执行了$(1)——这时候jQuery会把这个数字当成特殊参数处理,最终返回的是一个jQuery对象,而非你想要的原始数值1。
其实$(this).data("id")已经直接返回了你需要的数值(jQuery的.data()方法会自动把data-id属性的字符串值转换成对应的数值类型),完全不需要再用$()包裹它。
修正后的代码
把多余的$()去掉就可以正常弹出数值1了:
$(".live_item").on("click",function(){ alert($(this).data("id")); });
另外补充个小知识点:如果你用.attr("data-id")来获取的话,得到的会是字符串"1",如果需要数值的话得手动转换(比如parseInt($(this).attr("data-id"), 10)),而.data()会自动帮你完成类型转换,用起来更省心~
内容的提问来源于stack exchange,提问作者OhGodWhy
相关产品推荐
相关产品推荐

