用真正的价值取代“这个”

时间:2014-01-04 19:02:29

标签: javascript jquery function

现在我在函数中有这段代码:

oTrack = json.played_tracks[0];

eA = $("<a/>")
.addClass("hugetile")
.attr("href","#"+0)
.appendTo(o)
.click(function(){
    cont.getDetails($(this),"lastsong",18);
    console.log($(this)) 
});

现在:我希望能够用真正的价值取代“this”。

console.log显示:Object[a.hugetile #0]

然而,简单地将“$(this)”替换为“Object [a.hugetile#0]”会导致大错误。

我需要它而没有“this”的原因是因为我希望函数能够立即执行.click函数(这样它就可以触发而无需用户点击)。但目前这是不可能的,因为我不能cont.getDetails($(this),"lastsong",18); 作为独立代码。 (这是未知的)

2 个答案:

答案 0 :(得分:2)

只需触发点击

即可
oTrack = json.played_tracks[0];

eA = $("<a/>")
.addClass("hugetile")
.attr("href","#"+0)
.appendTo(o)
.click(function(){
    cont.getDetails($(this),"lastsong",18);
    console.log($(this)) 
}).click();

调用

cont.getDetails(eA,"lastsong",18);

之后应该没有闪光灯工作。 eA相当于点击处理程序中的$(this)

答案 1 :(得分:2)

立即触发点击事件将是最好的方法。但是,为了让您更好地了解事件处理程序中的this,您还可以执行以下操作:

eA = $("<a/>")
    .addClass("hugetile")
    .attr("href", "#" + 0)
    .appendTo(o)
    .click(function () {
        cont.getDetails($(this), "lastsong", 18);
        console.log($(this))
    });

cont.getDetails(eA, "lastsong", 18);

在事件处理程序中,this引用您使用$("<a/>")创建的DOM元素。但eA也是如此。 eA是一个包含该DOM元素的jQuery对象,因此eA$(this)都是包含相同DOM元素的jQuery对象。