Jquery执行点击<img/>

时间:2011-09-13 17:48:52

标签: javascript jquery

我正在使用外部JavaScript插件,我无法通过点击缩略图列表来编辑和工作。

出于造型目的,我不得不将图像包装在<a>中:

if(img.parent("a").length == 0){
    img.wrap('<a />');
}

有没有办法可以为我插入的<a>添加点击,然后让这个JavaScript插件调用点击图片的操作。

我尝试了这个但是不起作用并给出了错误:Too much recursion

$("#thumbs a").live("click", function(){
    $(this).find("img").click();
});

3 个答案:

答案 0 :(得分:2)

是。

if(!img.parent("a").length){
    img.wrap('<a />').parent('a').bind('click', function() {

        // ALL THE CODE!!!

    });
}

您也不需要说if (something.length == 0)因为它默认会返回0 ...所以你可以说,if (!something.length)

答案 1 :(得分:1)

Too much recursion意味着某些东西一遍又一遍地循环,可能是无限的。您当前代码发生的原因是因为<a><img>的父级,因此<img>上的任何点击事件都会向父级<a>冒泡(搜索“事件”冒泡“在谷歌”。因此,您的代码基本上是在“当有人点击<a>时触发点击<img>然后<a>(因为事件冒泡)” - 这当然会导致代码运行试。

如果JavaScript插件已将绑定事件绑定到图像上的点击,我不明白为什么您需要将点击事件绑定到仅点击图像的父<a>。当用户点击<img>时,你需要发生什么,而不包括你的jQuery代码?

答案 2 :(得分:0)

e.stopPropagation();添加到imgs的点击处理程序中。

http://api.jquery.com/event.stopPropagation/