我想通过它的name属性识别每个元素。每个元素都有相同的类,最终将包含不同的动态信息。
例如,我希望以下代码提醒单个元素的名称值:
HTML:
<p class="pexample" name="0">this is p #1</p>
<p class="pexample" name="1">this is p #2</p>
<p class="pexample" name="2">this is p #3</p>
jquery的:
$('p').on('click', function() {
if ($('p').attr('name') !== undefined) {
alert($('p').attr('name'));
}
})
这是一个jsfiddle .. http://jsfiddle.net/XG7nd/1/
但此代码仅警告初始元素名称值。非常感谢帮助。
答案 0 :(得分:5)
这应该做:
$('p').on('click', function() {
var name = $(this).attr('name');// `this` here refers to the current p you clicked on
if (name ) {
alert(name);
}
})
在执行$('p').attr('name')
时,这将始终为您提供集合中第一个项目的名称。
<强> Demo 强>
答案 1 :(得分:0)
答案 2 :(得分:0)
您想使用$(this)
$('p').on('click', function() {
if($(this).attr('name') !== 'undefined') {
alert($(this).attr('name'));
}
});
答案 3 :(得分:0)
这是因为您在每次点击时都获得了第一个name
的{{1}}属性。您需要指定事件源自的那个:
<p>
注意,jQuery选择器返回一个匹配元素数组。您必须使用$('p').on('click', function() {
if ($(this).attr('name') !== undefined) {
alert($(this).attr('name'));
}
})
关键字来获取当前上下文中元素的句柄。
<强> FIDDLE 强>
答案 4 :(得分:0)
即使在p
上也一直在寻找click
元素,因此它会选择找到的第一个元素。
您的代码所说的内容:
点击p
时:
p
元素并提醒其属性。你真正想要的是什么:
点击p
时:
选择this
的属性,即被点击的元素。
$('p').on('click', function() {
if ($(this).attr('name') !== undefined) {
alert($(this).attr('name'));
}
})
详细了解this keyword。