2009-04-09 58 views
1

我有一個包含一堆JQuery對象的頁面。在同一頁上,我有一個表單,您可以在一系列字段中輸入搜索詞,然後單擊搜索按鈕,搜索按鈕將向服務器發送AJAX請求,然後將生成的HTML加載到div中。一個非常簡單的JQuery應用程序...jquery無法從ajx加載事件中的新div訪問原始jQuery對象

問題是這樣的。當您點擊通過ajax加載到div的搜索結果鏈接時,原始頁面上的Jquery代碼將不會觸發。例如,如果我在原始頁面上添加了一個名爲searchClick()的函數,那麼我會爲通過ajax加載到div的每個<a>標記添加一個onClick =「searchClick()」,單擊該鏈接會產生JS錯誤說searchClick()是未定義的。但它被定義了!我在AJAX調用之前定義了它。我正在閱讀Jquery事件冒泡,但這似乎不是問題所在。實際上我不確定,但我已經嘗試過,但仍然無法正常工作。這裏要說的是加載主網頁上我當前的代碼

當瀏覽器加載頁面:

<script language="javascript" type="text/javascript"> 

$(文件)。就緒(函數(){

...

**function searchClick(value)** { 
     alert("here"); 
    } 

    $('#search').click(function() { 
      description = urlencode($("#description").val()); 
      manufacturer = urlencode($("#manufacturer").val()); 
      product = urlencode($("#product").val()); 
      category = urlencode($("#category").val()); 
      subcategory = urlencode($("#subcategory").val()); 

      $(**'#search_results'**).**load**('/productSearch.php?description=' + description + '&product=' + product + '&category=' + category + '&subcategory=' + subcategory') 

     }); 

    ... 
    </script> 

    <div id="**search_results**"></div> 

以下是調用ajax查詢時出現在search_results div中的鏈接示例(th È負載())

<a href="#" onclick="s**earchClick("some value")"**>Product 1</a> 

點擊在示例該鏈路上上面將產生searchClick()沒有定義錯誤。 任何人有任何建議?謝謝!

回答

2

起初live events將使您的生活更輕鬆,因爲您不必自己添加onclick處理程序。相反,您可以綁定事件處理程序,該處理程序也將應用於稍後添加到DOM的元素(例如,通過AJAX調用)。

至於你的問題,我沒有解釋。嘗試使用Firebug之類的工具來監視html源代碼以及DOM結構。

0
$("#search").live("click", function() 
{ 
    var description = urlencode($("#description").val()); 
    var manufacturer = urlencode($("#manufacturer").val()); 
    var product = urlencode($("#product").val()); 
    var category = urlencode($("#category").val()); 
    var subcategory = urlencode($("#subcategory").val()); 

    $.ajax 
    ({ 
     type: "GET", 
     url: "/productSearch.php", 
     data: 'description=' + description + '&product=' + product + '&category=' + category +"&subcategory=" + subcategory, 
     success: function(result) 
     { 
      $("#search_result").html(result); 
     } 
    }); 
}); 

使用JQuery Live當添加新元素時它們仍會對事件做出反應。 不要使用

<a href="#" onclick="s**earchClick("some value")"**>Product 1</a> 

其不好的形式。

相關問題