2011-02-04 37 views
1

UPDATE後のdivを見つけるために、長さを使用して:)問題は、divタグは長さ、オフセットを(隠されているときのdivは、隠されたdivの中にあったjQueryの - AJAX呼び出し

、位置()が正しく動作しません。 。

//以下のオリジナル投稿。


これは簡単なはずです。以下のためのあなたの検索のdivがあったときに(文書ではない場合、私はdiv要素は、アヤックスの.html()出力後のページにexsistsかどうかをテストしようとしている

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

、一つだけ問題があります).readyが発生し、.lengthはそれを認識しません。ロード・コールのロードが終了した後にロードされたものを探す必要があり

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

+1

ajax呼び出しのコードを表示できますか?一般的な間違いの1つは、ajax呼び出しが終了するのを待たずに、非同期で、最初の呼び出しがサーバーからの応答前にスクリプトに戻ります。新しいコンテンツとやりとりするコードは、ajax呼び出しのコールバックメソッドである必要があります。 –

+0

はajaxレスポンスからチェックしているdivですか? – corroded

+0

divが存在する場合は正しくテストされているようですが、正確には問題は何ですか? – Yoni

答えて

1

次のようなものを使用することができます。

3

は、あなただけのサイズ()メソッド

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

これはDOMで一致する要素の数を詳述を使用することができます。

2

あなたが(JQueryでasync:true)と仮定して非同期要求を実行している場合は、コンテンツが追加された後、関数のsuccessコールバックでsize()を使用する必要があります。 http://github.com/brandonaaron/livequery/downloads:私の解決策は、livequeryプラグインを使用していた -

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

私はページのコンテンツは、AJAXを使用してロードされた後ティッカーと正確に同じ問題に遭遇します。私はそれから次のように使用します:

$('.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は多くの問題を引き起こす可能性があります。

関連する問題