2010-05-15 86 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();