代码之家  ›  专栏  ›  技术社区  ›  user405398

jQuery委托不工作?

  •  3
  • user405398  · 技术社区  · 15 年前

    当一组特定的链接被点击时,我试图使用委托来调用函数。 我以前在别的网页上也用过。在那里工作过。但是,这次我甚至找不到问题所在。

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

    <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 回复  |  直到 15 年前
        1
  •  5
  •   user113716    15 年前

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

    逆转它们,它应该会起作用:

    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);
    
        2
  •  4
  •   ThiefMaster    15 年前

    在定义函数表达式之前使用它。这不管用。或者使用正则函数声明( function loadAlbum() { /* ... */ } )或定义 this.loadAlbum ( this.loadAlbum = function() { /* ... */ } )在delegate()调用中使用它之前。