Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery委托不工作?_Jquery - Fatal编程技术网

jQuery委托不工作?

jQuery委托不工作?,jquery,Jquery,当一组特定的链接被单击时,我尝试使用委托调用函数。 我以前已经在其他页面中使用过它。它是在那里工作的。但是,这一次我甚至无法找到问题所在 我的链接是动态生成的,它们看起来像 <a class="thumbLink" href="#" id="My HomeTown-1"><small>My HomeTown</small></a> 上述代码位于$(document).ready(function(){})中。对吗?? 我还尝试将它们放在一个单独的

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

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

<a class="thumbLink" href="#" id="My HomeTown-1"><small>My HomeTown</small></a>
上述代码位于
$(document).ready(function(){})中。对吗??
我还尝试将它们放在一个单独的
js
文件中。我不能让它工作


你知道我的问题吗

在定义函数表达式之前使用它。这不管用。在委托()调用中使用常规函数声明(
function loadAlbum(){/*…*/}
)或定义
this.loadAlbum
this.loadAlbum=function(){/*…*/}
),然后再将其用于委托()调用。

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

将它们反转,它应该会起作用:

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

我试过了。这对我不起作用。我已经用结果更新了这个问题。#@patrick dw:它不起作用。我也厌倦了使用
.live()
。它也不起作用。这对你有意义吗!!!无论如何,我已经用
try
结果更新了我的问题。@CS 1.6-是否也动态创建了
#albumHolder
元素?另外,您是否有可能在这个项目上使用较旧版本的jQuery?@CS 1.6-好的,是的,您需要在创建委托时手动为其分配
delegate()
处理程序,或者使用
.live()
而不是
.delegate()
。(我建议坚持使用
.delegate()
)@patrick dw:使用它的直接父id是规则吗!!!或者我应该使用任何其他的#id,例如,我应该使用
a
来处理这个html
@CS 1.6:我不太清楚你的意思。如果您的意思是在使用
.delegate()
时,可以指定目标元素的任何祖先。它不需要是直接的父母。编辑:很高兴你让它工作了o)
$("#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);
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);