2011-02-04 51 views
1

UPDATE:jQuery的 - 用長度找到Ajax調用後格

的問題是格在那被隱藏,當div的是隱藏的長度,偏移(),位置(一個div)無法正常工作。

//原始帖子在下面。


這應該很簡單。

我想要測試,如果一個div一個ajax的.html()輸出後的頁面上exsists

 
if($('#'+mydiv).length != 1) { 
    // do stuff 
} 

只存在一個問題,如果你的DIV的搜索是不存在的時候(文件).ready已經啓動,然後.length看不到它。

+1

可以顯示ajax調用的代碼,一個常見的錯誤是不等待ajax調用完成,請記住它是異步的,並且在從服務器收到任何響應之前,初始調用將返回到腳本。任何與任何新內容進行交互的代碼都需要處於ajax調用的回調方法中。 – 2011-02-04 06:44:04

回答

1

您可以使用類似:

$('#loader').load('url', {variable1:var1}, function() { 
    if($('#'+mydiv).length != 1) { 
     // do stuff 
    } 
}); 

這應該尋找您的負載通話加載完成後加載的東西。

3

你可以只使用大小()方法

if($('#'+mydiv).size() != 1) { 
    // do stuff 
} 

這講述的DOM元素匹配的數量。

2

如果你正在執行一個異步請求,我假設你是(JQuery中的async:true),那麼你應該在你的函數的成功回調中使用size(),在添加內容之後。

$.ajax({ 
     url: requestUrl, 
     type: 'POST', 
     dataType: 'json', 
     data: {}, 
     success: function(response) { 
       $('#container').html(response.data); 
       if($('someSearch').size() > 0) 
        alert('exists'); 
      } 
    }); 
1

我碰上與股票完全相同的問題後,頁面內容已經使用AJAX加載 - 我的解決辦法是使用的liveQuery插件:http://github.com/brandonaaron/livequery/downloads。然後我用以下方式使用它:

$('.ticker').livequery(function() {  
    if ($(this).length > 0) { 
     var thisObj = $(this); 
     if (thisObj.length > 1) { 
      jQuery.each(thisObj, function() {     
       systemObject.tickerExe($(this)); 
      }); 
     } else {  
      systemObject.tickerExe(thisObj); 
     } 
    } 
}); 

我希望這有助於。

0

檢查長度時確保您的div未隱藏。通常,隱藏的div可能會導致很多問題。