2012-01-24 5 views
0

2倍の問題。動的コンテンツのif文(if emptyかdo blah blah blah)で.delegateまたは.liveを使用する

他の要素(B)が空の場合は要素(A)を非表示にし、Bに要素がある場合はAを表示する必要があります。

そして、私は動的にロードされた要素でこれを行う必要があります。

$(document).ready(function() { 
    if ($('#mapDirections').html().trim()) { 
    $('#mapReset').hide(); 
    } 
    else 
    { 
    $('#mapReset').show(); 
    } 
}); 

をしかし、それは動作しませんでした、と私はそれは思わなかった - 私はそれらを使用する方法がわからデリゲートを使用し、クリックイベントに住んでいるが、いませんでした:

は、だから私は試してみました私がしたいことと一緒に。

+0

この機能を適用しているときにセレクタが検索する要素が存在しないため、動的HTMLでは機能しません。 –

+0

@TetsujinnoOni - ok、要素#mapDirectionsは存在しますが、空です。要素が追加されると、他の要素が表示されます。空の場合は要素を隠したい – Jason

+3

コードに追加する責任はありますか?その場合は、その時点で適切なコードを追加してください。 @JeffBごとに –

答えて

0

#mapDirectionsを設定しているJavaScriptを管理していただければと思います。データが到着した直後にコールバック動作を実装する必要があります。

このコントロールがなく、新しいデータが確率的である場合は、新しいコンテンツのノードをポーリングする時間間隔を決定する必要があります。

は、例えば、仮定するonNewMapDirections()DOMでいくつかのイベントに応じて呼び出されます。

function onNewMapDirections(newData) { 
    $('#mapDirections').html(newData); 
    //Add callback here 
} 

これは、文書にカスタムイベントハンドラをバインドし、トリガすることによって簡単に行うことができます

//Called when new directions are ready to add to DOM 
function onNewMapDirections(newData) { 
    $('#mapDirections').html(newData); 
    $(document).trigger('checkMapDirections'); 
} 

//Called in response to dispatched event 
function onMapDirectionsUpdated(evt) { 
    if ($('#mapDirections').html().trim()) $('#mapReset').hide(); 
    else $('#mapReset').show(); 
} 

//Binds event 
$(document).ready(function() { 
    $(document).bind('checkMapDirections', onMapDirectionsUpdated); 
}); 

新しい地図データが呼び出されるとすぐにコールバックを埋め込むことができない場合は、引き続きイベントロジックを使用して定期的に呼び出すタイマーを実装できます。

$(document).trigger('checkMapDirections');