我在wordpress循环中有代码,所以变量$ perf和$ url每次都会改变。
<div class="link" data-performer="<? echo $perf; ?>">
<a class="performer_rp" href="<? echo $url; ?>">My anchor</a>
</div>
此jquery函数在点击时将变量$ perf广告到链接。
function performer_rp(){
var perf;
perf = $(".link").data('performer');
$("a.performer_rp").click(function() {
this.href += "?perf="+perf+"";
});
};
问题是,我只得到$perf
的第一个值,它不会随循环而改变。
让我们说循环“循环”5次,得到5 $perf
个值:value1,value2 ... value5。
jquery代码每次都会赋值value1。
为什么? 太非常了!
答案 0 :(得分:2)
嗯'id就是这样做的:
function performer_rp(){
var perf;
$("a.performer_rp").click(function() {
//get the value from the parent (as suggessted in the comment you can also use
//$(this).closest('div.link').data('performer'); if the '<a>' is not a direct child of the div
perf = $(this).parent().data('performer');
this.href += "?perf="+perf+"";
});
};
否则每次都有相同的性能(因为它与你点击的链接无关),无论如何你都会得到一个perf的集合。
编辑:我不确切知道data()的工作原理,但我认为你可以使用:
perf = $(this).parent().attr('data-performer');
答案 1 :(得分:0)
选择器
$(".link");
获取包含所有链接的集合(例如,在您的示例中为5)。 当你这样做时
perf = $(".link").data('performer');
您只能获取 中第一个元素的数据值
答案 2 :(得分:0)
你好我不确定我是否有你的问题。为什么要在点击时分配值?
相反,您可以尝试这样做,以便在页面加载后分配所有“数据执行者”值。
$(document).ready(function() {
$(".link").each(function(){
var parent = $(this),
old_link = parent.find('a.performer_rp').attr('href');
new_link = old_link + "?perf="+parent.data('performer');
parent.find('a.performer_rp').attr('href', new_link)
});
});