jQuery 委托(delegate)不起作用?

标签 jquery

当一组特定的链接被点击时,我尝试使用委托(delegate)来调用函数。 我之前已经在其他页面使用过它。它在那里工作。但是,这次我什至找不到问题出在哪里。

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

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

jQuery 委托(delegate)函数是,

$(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 文件中。我无法让它发挥作用。

关于我的问题有什么想法吗!!!

最佳答案

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

反转它们,它应该可以工作:

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);

关于jQuery 委托(delegate)不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4231058/

相关文章:

jquery - HTML/CSS : How to get the id of sub menu

javascript - 如何在 addEventListener 上实现 jquery-throttle-debounce

javascript - 如何选择!(不是)$ (".some_class")?

jQuery 在点击事件完成后执行操作

jquery - 如何隐藏 Flash 嵌入而不禁用它们

javascript - 如何在 HTML 中正确显示保存在数据库中的文本?

javascript - 为什么文档选择器不适用于 mouseenter 事件?

javascript - 如何在javascript中设置循环

使用渐变作为自定义背景的 jQuery Mobile ListView

javascript - WordPress 中链接 php 和 javascript 错误