3

ページへの入力を ajax すると、次のコードは機能しますが、特定のコードを出力すると例外が発生し、アラート test3 は発生しません。

alert("test2");
$(html).hide().prependTo("#current table.vtable").fadeIn("slow");
alert("test3");

jquery 例外が発生します。

Uncaught TypeError: Cannot set property 'cur' of undefined 

CSSが適切に機能していると述べたように、他のクラスを印刷しようとしましたが、完全に機能します。唯一の違いは、使用することです

print <<<END
...
END;

通常の print の代わりに、tr は別のクラスです

4

1 に答える 1

5

jquery 1.7 から 1.9 にアップグレードした後、この問題に遭遇しました。これは、fadeIn() の実装におけるバグです。

これは、存在しないキーをクエリすると、data() メソッドが null ではなく undefined を返すようになったためです。

とにかく、私が見つけた回避策は、最初にデータを追加し、次に追加された新しいコンテンツへのjqueryハンドルを取得し、それをフェードインすることです.

新しいコンテンツをテーブルに挿入しているので、実際には最初の子ではないため、挿入したばかりのものを見つけるのは少し面倒です (「tbody」タグで暗黙的にラップされています)。挿入されたものに一時的な属性を設定し、それを検索してから削除することで、これを回避しました。これは明らかに巨大なハックですが、うまくいきます。

var html = "<tr><td>new thing1</td><td>new thing2</td>";

$("#clickme").click(function () {
    var target = $("#current table.vtable");
    $(html).attr("jquery_workaround","sigh").hide().prependTo(target);
    var newstuff = target.find("[jquery_workaround=sigh]");
    newstuff.removeAttr("jquery_workaround").fadeIn("slow");
});

いじりの場合: http://jsfiddle.net/BUVUj/

于 2013-04-06T22:26:30.310 に答える