2012-10-23 101 views
0

看來我得到一個有點問題,我很困惑什麼..的JavaScript replaceWith +的classid

代碼:

$(".post-click").click(function() 
{ 
    var classid = $(this).attr('id'); 
    var postid = $(this).attr('id'); 
    postid = postid.replace('post-click-id_', ''); 

    alert("ID: " + classid + " PostID: " + postid); 

    $(this).replaceWith('<img SRC="assets/img/refresh.gif" ALT="" id="' + classid + '">'); 

    $.post("likepost.php", { postid: postid } , function(data) 
    { 
     $(document).foundationTooltips(); 

     alert(data); 
      $("#" + classid).replaceWith(data); 

      var classes = $("#" + classid).attr('class'); 

      alert(classes); 
    }); 
}); 

現在,這是什麼做的,當你點擊它,它會替換您點擊的ID的文本。現在,在上面我得到這個:

$(".post-click").click(function() 
{ 

看來點擊後沒有得到更換之後再調用。爲了確保我將它替換爲優秀的課程,我把'var classes = ...'放在那裏。它會提醒班級點擊後進入替換。

更換是: <一類= 「點擊後的」 href = 「#」>測試</A>「;

任何想法,爲什麼jQuery的不調用點擊後不再

+0

你是什麼意思「..doesn't被調用了更換後。」?當你再次點擊它時不會被調用?你用'$(this)替換整個元素.replaceWith('');' – st3inn

回答

2

使用replaceWith,你與它的事件綁定替換的DOM元素,完整。

幸運的是,jQuery提供.on它允許您使用事件代表團(而不是通過新的內容重新綁定你的事件循環)。

將其應用於單擊後的父節點,然後在參數中指定該類。

例如

$(".some-parent-elem").on("click", ".post-click", 
     function(){...do stuff on click...}); 

這是如何工作的,它監聽的。有的父母:馬點擊,然後(當你點擊該元素的孩子這是由於事件冒泡將意味着它觸發)如果原來的目標元素被點擊的類有點擊後的類,它運行該函數。