0

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()が呼び出されると、Firebug は tooltip.js でエラーを報告します。

Line 282
tsettings is null

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

私は何を間違っていますか?リンクにツールチップが添付されている場合、特別に削除する必要がありますか?

更新:削除.tooltip()すると問題が解決します。入れておきたいのですが、.tooltip()ここでの の使い方が間違っているのではないかと疑われます。

4

2 に答える 2

2

これと同じ問題があり、エラーを防ぐために .remove() の呼び出しを遅らせる必要がありました。したがって、次のようなものがうまくいく場合があります。

$(delete_button).click(function() {
   setTimeout( function() { course.remove() } , 1);
   return false;
}).tooltip();
于 2012-12-13T20:27:44.877 に答える
1

プラグインには、要素にアタッチするいくつかの.tooltip()ハンドラ、つまり on mouseovermouseout、および がありclickます。要素を削除する場合は、.unbind()次のようにすべてのイベントを実行しないようにします。

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

注意すべきもう1つの変更点は、delete_buttonすでにjQueryオブジェクトであり、それを$()再度ラップするとクローンするだけです:)

このエラーは、jQuery がキャッシュからデータを削除した.remove()後、要素から設定データをフェッチして使用しようとしているために発生します。jQuery.data()このアプローチでは、これらすべてのツールチップ ハンドラーが再び実行されるのを防ぐだけなので、データがなくなっても (あるべき姿で) 問題になりません。

于 2010-05-15T06:57:21.383 に答える