2011-02-12 47 views
0

所以我在jQuery中附加了一些包含href的元素,该元素在点击锚点时调用另一个脚本,但不起作用;这里有一个例子:jQuery用href和javascript附加元素不起作用

$(".un_comentario").hover(

    function() { 

     $("#dedos_voto", this).append($("<span id=\"commentup\" class=\"vote_up\"><a href=\"javascript:;\" ><img src=\"/mimg/comment/csthumbup.png\" /></a><?php echo $utilchido;?></span>")); 

    } 

); 

因此,大家可以看到锚具有调用另一个脚本的HREF,这里的其他脚本:

$(function(){ 

    $("span.vote_up").click(function(){ 
    //get the id 
    the_id = $("div.un_comentario").attr('id'); 

     $.ajax({ 
      type: "POST", 
      data: "action=vote_up&id="+$("div.un_comentario").attr("id"), 
      url: "votacomment.php", 
      success: function(){alert("Gracias, el voto se ha agregado."); 
       } 

     }); 


     }); 
}); 

因此,如果元素在HTML脚本只能标记,但如果元素附加了jQuery则不会。

有什么建议吗?

回答

2

要动态添加HREF链接到DOM使用.live()

$("span.vote_up").live('click',function(){ 

//rest of your logic 

}); 
0

可以使用$("span.vote_up").live(),而不是$("span.vote_up").click。这会将代码绑定到可能稍后添加到DOM的所有span.vote_up元素。

我发现this链接有用

+0

好吧,似乎现在执行脚本(显示更改检查它的工作),但现在它没有做它应该做的做,我要检查我是否错过了一些东西。 – Danny 2011-02-12 07:45:29

1

上面的两个答案是正确的,但我也建议在锚不使用href=\"javascript:;\",而不是在jQuery函数的末尾添加return false;

我使用本网站的最佳做法,用JavaScript http://www.javascripttoolbox.com/bestpractices/#onclick(我指导你的部分约锚,但整个页面是值得一读)

+0

谢谢,我要用onclick来代替。 – Danny 2011-02-12 07:53:24

1

.live()是早已过时(1.9删除),我们可以停止推荐它?正确的方法是使用.on(),像这样:

$("#span.vote_up").on("click", function(event){ 
    //do this 
}); 

jQuery documentation for .on()

而且,无论是return false;href=\"javascript:;\"建议必然是很好的答案...如果你没有合适的HREF到替换(然后使用event.preventDefault()以防止默认行为发生),只需使用更合适的元素...