2013-03-25 36 views
3

如果我ajax任何輸入到我的頁面下面的代碼的作品,但如果我打印一些特定的代碼我得到一個異常,警報test3從不會觸發。JQuery預先崩潰

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; 

代替正常打印和tr是不同的類

+2

不'$(HTML)'必須是'$( 「HTML」)'(引號)? – adamdunson 2013-03-25 18:28:36

+0

$ .get('test.php',function(html){ – user2204970 2013-03-25 22:04:09

+1

這個答案適用於我:http://stackoverflow.com/questions/15258924/line-breaks-in-jquery-ajax-html-callback-cause - 錯誤 – 2013-05-30 11:46:51

回答

5

我剛剛遇到此問題後從jquery 1.7升級到1.9。這是執行fadeIn()時的一個錯誤。

與查詢不存在的鍵時data()方法現在返回undefined而不是null的事實有關。

總之,我找到了一個解決方法是先在前面加上數據,然後得到一個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/

+0

有點骯髒,但工程。謝謝 – 2013-06-21 17:39:34

+2

我們剛剛遇到了這個問題,發現這也適用:var $ content = $($。parseHTML(response.trim())) – 2013-07-12 21:49:54

+0

很好的解決方法:)! – 2013-11-06 12:29:39