变量卡住,不会改变

时间:2011-11-28 15:36:21

标签: jquery

所以我有一个像以下元素的列表:

<span class="rank" id="someID1" user_id="1">Whatever 1</span>
<span class="rank" id="someID2" user_id="2">Whatever 2</span>
<span class="rank" id="someID3" user_id="3">Whatever 3</span>

我有一个JQuery Selector设置如下:

$(".rank").click(function(){
    var url = "utilities.php?id=" + $(this).attr("user_id");
    $(".rank").editable("save_url", {
        loadurl: url, type: "select" });
});

现在,问题在于,无论我点击哪一个,“user_id”始终是我点击的第一个。这非常令人沮丧,我不明白为什么它会坚持下去。如果使用console.log来检查URL,则id设置正确,但是在Ajax调用中,它是我为每一个点击的第一个。

2 个答案:

答案 0 :(得分:0)

试试这个:

$(".rank").bind("click", function(){
    var $this = $(this),
        url = "utilities.php?id=" + $this.attr("user_id");
    $this.editable("save_url", { loadurl: url, type: "select" });
});

或者这个:

var $rank = $(".rank");

$rank.bind("click", function(){
    var url = "utilities.php?id=" + $(this).attr("user_id");
    $rank.editable("save_url", { loadurl: url, type: "select" });
});

答案 1 :(得分:0)

那是因为当.editable()被应用时,它会从它之前定义的url开始,这是你从第一个跨度构建的url。您应该从可编辑调用内部构建URL,以便始终检索所单击元素的user_id属性。

$(".rank").editable("save_url", {
    loadurl: "utilities.php?id=" + $(this).attr("user_id");
    type: "select"
});