我正在尝试使用委托来调用函数,当一组特定的链接被点击时。 我之前在其他页面中已经使用过它。它在那里工作。但是,这次我甚至无法找到问题所在。
我的链接是动态生成的,看起来像是
<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
文件中。我无法使它发挥作用。
关于我的问题的任何想法!!!
答案 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.loadAlbum
(this.loadAlbum = function() { /* ... */ }
)。