2012-10-18 56 views
0

美好的一天後,觸發一個onclick事件附加錨它

我一直在努力,現在得到這個權利很長一段時間,我只是想知道,如果我做的事情非常愚蠢或那條線。

該代碼從php獲取json對象並將信息附加到右側。但我不能讓它在附加的錨標籤上調用函數。我第一次嘗試通過jQuery的點擊功能通過它的ID,但沒有奏效,現在我試圖通過onclick觸發事件。

$(document).ready(function(){ 
    $("#searchBtn2").click(function(){ 
     $('#searchResults').children().remove(); 
     var l = document.getElementById('properSearch').value.length; 
     if(l > 0){ 
      var searchjson = 
      { 
       "search" : document.getElementById('properSearch').value 
      }; 
      searchjs = JSON.stringify(searchjson); 
      var search = {json:searchjs}; 
      $.ajax({ 
       type: "POST", 
       url: "searchUsers.php", 
       data: search, 
       success: function(result) 
       {  
        var obj = jQuery.parseJSON(result); 
        $('#searchResults').next().remove(); 
        for(var i = 0; i < obj.length; i+=1) 
        { 
         if(obj[i].user_id != localStorage.user_id) 
          $('#searchResults').append("<tr><td id = 'search_row'>" + obj[i].firstname + " " + obj[i].lastname + " </td> <td> <a OnClick = \"add();\" href = '#' id = 'friend_add' class = '" + obj[i].user_id + "' > add </a> </td> </tr> "); 
        } 
       }, 
       error: function() 
       { 
        alert('An Error has occured, please try again.'); 
       } 
      }); 
     } 
    }); 

    function add(){ 
     alert("clicked"); 
     //var theClass = this.className; 
     //alert(theClass); 
    }; 
}); 

編輯:與功能

$(document).ready(function(){ 
    $("#searchBtn2").click(function(){ 
     $('#searchResults').children().remove(); 
     var l = document.getElementById('properSearch').value.length; 
     if(l > 0){ 
      var searchjson = 
      { 
       "search" : document.getElementById('properSearch').value 
      }; 
      searchjs = JSON.stringify(searchjson); 
      var search = {json:searchjs}; 
      $.ajax({ 
       type: "POST", 
       url: "searchUsers.php", 
       data: search, 
       success: function(result) 
       {  
        var obj = jQuery.parseJSON(result); 
        $('#searchResults').next().remove(); 
        for(var i = 0; i < obj.length; i+=1) 
        { 
         if(obj[i].user_id != localStorage.user_id) 
          $('#searchResults').append("<tr><td id = 'search_row'>" + obj[i].firstname + " " + obj[i].lastname + " </td> <td> <a href = '#' class = 'friend_add' id = '" + obj[i].user_id + "' > add </a> </td> </tr> "); 
        } 
       }, 
       error: function() 
       { 
        alert('An Error has occured, please try again.'); 
       } 
      }); 
     } 
    }); 

}); 

$('#searchResults').on('click', '.friend_add', (function(){ 
    alert("clicked"); 
)}; 

在此先感謝

+0

不相關的問題,但你使用相同的ID在元素每隻小豬。 ID必須是唯一的。這些應該可能是類而不是ID。 – Barmar

+0

@barmar我仍然在這方面試驗它,但謝謝你指出它,只是修復它 – Crossman

回答

0

內聯事件處理程序將無法找到你的附加功能,因爲它是一個匿名函數中定義。嘗試在document.ready處理程序外定義add。

+0

謝謝你,我很愚蠢 – Crossman

1

而不是使用內聯事件處理程序,考慮給所有元素的通用類和委託的事件使用jQuery.on()的:

$("#searchResults").on("click", ".friend_add", add); 
+0

可以將最後一個參數添加替換爲匿名函數嗎? – Crossman

+0

當然。在需要功能的地方,可以使用任何功能。 – Barmar

+0

由於某些原因,它破壞了我的代碼,我編輯了我原來的帖子和我添加的內容。我做錯了嗎? – Crossman