Jquery代码,用于为循环内的链接分配不同的变量

时间:2011-06-26 13:20:25

标签: php jquery

我在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。

为什么? 太非常了!

3 个答案:

答案 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)
    });
});

示例: http://jsfiddle.net/USEkF/