2011-02-12 44 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()以防止默認行爲發生),只需使用更合適的元素...