0

单击图像后,我正在使用 JQuery 显示工具提示框。到目前为止,我可以选择正确的 div,然后我可以识别包含文本节点的正确子 div。不幸的是,我无法获取 sub-div 的文本节点。出了什么问题 - 在 currentDescriptionContainer 上调用 html() 后我得到“null”?提前致谢!

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();
    });
}
4

1 回答 1

0

您的代码可以真正简化。试试这段代码,打开控制台看看执行是否正确

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();
     } 
});

请注意,html()当应用于元素集合时仅影响第一个元素,因此在此示例中我text()改为使用(而且我不知道您希望检索多少个元素)

关于您的代码,我怀疑您正在创建一个可能导致问题的非自愿关闭:当单击事件发生时,您有

var currentContainer = jQuery('.tooltipContainer').eq(i);

但由于for循环已经结束,该变量i将是您集合的最后一个索引。因此,无论您单击什么工具提示,currentContainer都将始终是使用该索引的参考

于 2012-04-19T07:40:30.907 回答