2012-04-19 3 views
0

イメージをクリックした後、ツールチップボックスを表示するためにJQueryを使用しています。これまでのところ、正しいdivを選択してから、テキストノードを含む正しいsub-divを特定することができます。残念ながら私はサブディビジョンのテキストノードを取得できません。何が間違っていますか?currentDescriptionContainerでhtml()を呼び出した後、「null」になっていますか?前もって感謝します!find() - usageの後にテキストノードを取得する

var tooltipItems = jQuery('.tooltipContainer').length; 
var i=0; 
for (i=0; i<tooltipItems; i++){ 
    jQuery('.tooltipContainer').eq(i).bind('click', function(){ 
    var currentContainer = jQuery('.tooltipContainer').eq(i); 
    var currentDescriptionContainer = currentContainer.find('div'); 
    var currentDescriptionText = currentDescriptionContainer.html(); 
    console.log(currentDescriptionText); 
    showRendererToolTipForIpad(this, currentDescriptionText); 
    hideRenderedToolTipAfterTimeout(); 
    }); 
} 
+3

うわー!長い変数名は何ですか?それは読みにくいです... – elclanrs

+0

関連するHTMLを提供できますか? – Johan

答えて

0

あなたのコードは本当に単純化できます。このコードを試すコンソールを開き、実行は、この例では、私が代わりtext()を使用する(私はドンようhtml()要素の集合に適用される」、最初の要素だけに影響を与えることを正しい

var tooltipItems = $('.tooltipContainer'); 
tooltipItems.bind('click', function() { 
    var divs = $(this).find('div'), cdText; 

    console.log('Element has %d descendent div/s' , divs.length); 

    if (divs.length) { 
     cdText = divs.text(); 
     console.log('Text found: ' , cdText); 
     showRendererToolTipForIpad(this, cdText); /* this is the i-th DOM node */ 
     hideRenderedToolTipAfterTimeout(); 
    } 
}); 

注あるかどうかを確認クリックイベントが発生したときに

var currentContainer = jQuery('.tooltipContainer').eq(i); 
を持っている:tはあなたのコードについて

)取得するために期待しているどのように多くの要素を知って、私はあなたがあなたの問題の原因である可能性があります不随意クロージャを作成している疑いがあります

サイクルがすでに終了しているので、変数iの最後のコレクションのインデックスになります。したがって、どのツールチップをクリックしても、currentContainerは常にそのインデックスを使用した参照になります

+0

ありがとうございました...あなたのコードはうまくいきました.Expereerenced JQuery-Developerがこのような問題をどう処理するかは、私にとっては非常に面白いです! – Jochen