使用href和javascript的jQuery附加元素不起作用
所以我在jQuery中附加了一些包含href的元素,当点击锚点时它会调用另一个脚本,但是不起作用; 这是一个例子:
$(".un_comentario").hover( function () { $("#dedos_voto", this).append($("")); } );
因此,您可以看到锚具有调用另一个脚本的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则不行。
有什么建议吗?
你动态地将href链接添加到DOM使用.live()
$("span.vote_up").live('click',function(){ //rest of your logic });
以上两个答案都是正确的,但我也建议不要在锚点中使用href=\"javascript:;\"
,而是添加一个return false;
在jQuery函数的末尾。
我使用此网站获得JavaScript的最佳实践http://www.javascripttoolbox.com/bestpractices/#onclick (我将指导您关于锚点的部分,但整个页面值得一读)
.live()
早已弃用(在1.9中删除),我们可以停止推荐吗? 正确的方法是使用.on()
,如下所示:
$("#span.vote_up").on("click", function(event){ //do this });
.on()的jQuery文档
另外,既不是return false;
或者href=\"javascript:;\"
的建议一定是好答案…如果你没有适当的href来替换(然后使用event.preventDefault()
来防止发生默认行为),只需使用更多适当的元素……
你可以使用$("span.vote_up").live()
而不是$("span.vote_up").click
。 这会将代码绑定到所有可能稍后添加到DOM的span.vote_up元素。
我发现此链接很有帮助