2010-05-15 89 views
0

麻烦我正在使用jQuery tooltip插件。jQuery工具提示:与删除()

我有HTML这样的:

<li class="term ui-droppable"> 
    <strong>Fall 2011</strong> 
    <li class="course ui-draggable">Biological Statistics I<a class="remove-course-button" href="">[X]</a></li> 
    <div class="term-meta-data"> 
     <p class="total-credits too-few-credits">Total credits: 3</p> 
     <p class="median-GPA low-GPA">Median Historical GPA: 2.00</p> 
    </div> 
</li> 

我想删除.course元素。所以,我附上一个单击处理程序到<a>

function _addDeleteButton(course, term) { 
    var delete_button = $('<a href="" class="remove-course-button" title="Remove this course">[X]</a>'); 
    course.append(delete_button); 

    $(delete_button).click(function() { 
     course.remove(); 
     return false; 
    }).tooltip(); 
} 

这一切工作正常,在安装单击处理程序的条款。然而,当course.remove()被调用时,萤火虫报告中tooltip.js错误:

Line 282 
tsettings is null 

if ((!IE || !$.fn.bgiframe) && tsettings.fade) { 

我在做什么错?如果链接附有工具提示,我是否需要专门删除它?

更新:删除.tooltip()解决问题。我想保留它,但是这让我怀疑我在这里使用的.tooltip()不正确。

回答

1

.tooltip()插件有几个附加到元素的处理程序,即mouseover,mouseoutclick。如果要删除的元素,只是.unbind()所有这些事件,使他们不跑,像这样:

delete_button.click(function() { 
    course.unbind().remove(); 
    return false; 
}).tooltip(); 

另外一个变化需要注意的是delete_button已经是一个jQuery对象,在$()再次just clones it其包装:)

发生错误是因为它试图从元素中取回并使用元素的设置数据,虽然.remove()通过jQuery.data(),其中jQuery从缓存中删除它的数据。这种方法只是防止所有那些工具提示处理程序再次运行,所以数据已经不存在了(因为它应该是这样),因为现在什么都不会查找。

2

我有这个相同的问题,并最终不得不延迟调用.remove(),以防止出现错误。因此,类似以下内容可能适用于您:

$(delete_button).click(function() { 
    setTimeout(function() { course.remove() } , 1); 
    return false; 
}).tooltip();