新手在这里 - 我知道我在这里错过了一些简单的东西。
目标是使用data-orgid属性从这个href中检索orgid。
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="111">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="222">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="333">Claim Your Listing</a>
我可以使用以下jquery检索第一个实例的属性。
// Click - Claim Your Listing
$( "#orgAct-claim" ).click(function() {
// Acquire orig from onClick attribute and set orgid.
var orgid = $('#orgAct-claim').attr('data-orgid');
alert(orgid);
});
在这里小提琴:https://jsfiddle.net/riverecho/0b7vpyw4/
= = = = =
更进一步,我可以通过将所有实例包装在另一个名为#listings的id中来获取该属性,以至少触发每个实例。但是,每个.click事件始终返回&#34; 111&#34;。
的第一个orgid<div id="listings">
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="111">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="222">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" id="orgAct-claim" data-orgid="333">Claim Your Listing</a>
</div>
在这里小提琴:https://jsfiddle.net/riverecho/w5eqguok/
= = = = =
如何将var设置为我点击的特定实例:111,222或333?
答案 0 :(得分:3)
首先,ID应该是唯一的。所以没有相同的ID。如果需要,请使用类。但是,在这种情况下,您可以使用在回调中传递的this
,如下所示:
$( "#orgAct-claim" ).click(function() {
var orgid = $(this).attr('data-orgid');
alert(orgid);
});
答案 1 :(得分:1)
您的ID应始终是唯一的,因此我将其删除。此外,您可以在click函数中使用$(this)来返回单击的元素。由于您也可能不想转到锚标记中指定的href,因此我使用event.preventDefault()来阻止它发生。
$(function() {
$(".claim").click(function(event) {
// Acquire orig from onClick attribute and set orgid.
var orgid = $(this).attr('data-orgid');
alert(orgid);
event.preventDefault();
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="claim" href="http://www.url.com" data-orgid="111">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" data-orgid="222">Claim Your Listing</a>
<a class="claim" href="http://www.url.com" data-orgid="333">Claim Your Listing</a>
&#13;
答案 2 :(得分:0)
根据W3C规范,具有相同ID的多个元素无效。
当您的CSS选择器只有ID选择器时,jQuery使用本机document.getElementById方法,该方法仅返回具有该ID的第一个元素。
如果您必须通过重复ID进行选择,请使用属性选择器:
$('a[id="orgAct-claim"]');
所以在你的情况下,正如Amit Joki建议的那样,你可以使用:
$('a[id="orgAct-claim"]').click(function() {
var orgid = $(this).attr('data-orgid');
alert(orgid);
});