簡體   English   中英

與jQuery結合使用時,腳本並不總是完全執行

[英]Script doesn't always fully execute when ajaxed in with jQuery

我有這個子句可以在一定條件下執行腳本;

//if artist page clicked run profile script
if (id == 'artist_link') {
        $.getScript("AJAX/get_profile.js");
}

我遇到的問題是腳本通常不會完全執行。 有時,其他時間什么也不會執行,只有部分執行。 我真的無法提供更多細節。 不過,奇怪的是,它總是在打開Firebug時完全執行,並且我找不到任何問題。 我經過測試且都存在此問題的瀏覽器是chrome和firefox

jsfiddle,其中包含get_profile.js文件。

我可能是錯的,但據我所知, $(location)是無效的jQuery。 僅用window.location.pathname替換$(location).attr('pathname')可以消除可能的錯誤。

還有其他一些一般的事情,它們實際上並不會影響它是否有效,但是值得一提的是提高整體美觀度:

  • JSON調用返回的data是對象,而不是數組。 要訪問顯示圖片的DP元素,應使用data.DP而不是data['DP'] (與name相同,還有其他幾個元素)
  • .click()已過時,使用.on()以代替結合事件
  • 您正在遍歷一個集合( $.each (data, function(key, val){ )並且在循環內部,正在修改DOM( $.append() )-您最好不要建立一個字符串循環期間生成HTML,然后將其添加到循環后的單個追加中,因為DOM插入會降低性能
  • 您多次使用同一個選擇器(請參閱$('#origin') ),這會使jQuery每次都要查找元素。 緩存它,然后在其上調用方法:
    • $origin = $('#origin');
  • 或將調用鏈接到同一元素:
    • $('#origin').html('a').append('b').append('c');

我幾乎100%肯定get_profile.js文件中的某處存在錯誤。 如果它正在執行,那么文件的加載就不會有任何問題。 問題存在於您的js文件中的某個地方,如果不查看其中的代碼,我們就無法真正對其進行調試。

修復! 我不知道為什么我沒看到這個,但是在頁面被取消之前,腳本被取消了,導致腳本無法運行。 無論如何,我已經修復了它。 謝謝您的幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM