我在点击图片后使用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();
});
}
答案 0 :(得分: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
始终是使用该索引的参考