jQuery委托不工作?

时间:2010-11-20 03:26:40

标签: jquery

我正在尝试使用委托来调用函数,当一组特定的链接被点击时。 我之前在其他页面中已经使用过它。它在那里工作。但是,这次我甚至无法找到问题所在。

我的链接是动态生成的,看起来像是

<a class="thumbLink" href="#" id="My HomeTown-1"><small>My HomeTown</small></a>

jQuery委托函数是

$(document).ready(function(){
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum);//albumHolder is div ID that holds all the <a> elements

this.loadAlbum = function(){
    var id = this.id;
    var number = id.lastIndexOf("-");
    var alubmName = id.subString(0, number);
    alert(albumName);
}
});

更新

我尝试了两个版本,但我无法使其正常工作!

$("#albumHolder").delegate('a.thumbLink', 'click', function loadAlbum(){
    var id = this.id;
    var number = id.lastIndexOf("-");
    var alubmName = id.subString(0, number);
    alert(albumName);
});



   this.loadAlbum(){
    var id = this.id;
    var number = id.lastIndexOf("-");
    var alubmName = id.subString(0, number);
    alert(albumName);
}
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum);

以上代码位于$(document).ready(function(){});。那是对的吗?? 我也尝试将它们放在一个单独的js文件中。我无法使它发挥作用。

关于我的问题的任何想法!!!

2 个答案:

答案 0 :(得分:5)

如果这是您实际代码的顺序,那么您在尝试初始化函数表达式之前尝试传递它。

反转它们,它应该有效:

this.loadAlbum = function(){
    var id = this.id;
    var number = id.lastIndexOf("-");
    var alubmName = id.subString(0, number);
    alert(albumName);
}
$("#albumHolder").delegate('a.thumbLink', 'click', this.loadAlbum);

答案 1 :(得分:4)

在定义函数表达式之前使用函数表达式。这不起作用。在委托()调用中使用它之前,使用常规函数声明(function loadAlbum() { /* ... */ })或定义this.loadAlbumthis.loadAlbum = function() { /* ... */ })。