【JQuery】初始化页面当异步加载时构建页面元素的顺序
今日幫同事看JQuery頁面初始化的一個問題時,由于自己沒怎么了解過JQuery,所以遇到了一點小麻煩,實現的效果就是初始化頁面時,默認選中頁面里某表格數據集的某行數據,這種問題,在Java\Delphi等語言里實現起來蠻容易,心想,JQuery里應該也還是容易的,這種小玩意兒不可能沒提供吧~查了下API,嗯,的確對于JQ還是小菜一碟的,使用如下代碼即可:
?
$("#JQGrid").setSelection(Rowid,?true);??????
目前整個頁面的構建都基于自寫的JS文件去構建的,所以把上面這代碼加在了理所當然初始化的地方,結果刷新沒效,后來挪步到好多地方,還是沒效果,this is why?
首先肯定的是HTML的JS文件的導入先后順序是沒錯的,HTML按從上到下加載JS的原則,肯定先導入JQuery核心JS文件,然后最后附加自寫的JS文件;
瀏覽了一遍.html文件,基本沒錯,那么問題還是出自于自寫的JS上
?
由于JS異步調用了一Java后臺編寫的獲取數據的方法,此時基本大概猜到了,應該是這異步加載順序搞得鬼
接著加alert一步步跟蹤,果然發現,當程序加載執行js時,當調用了一個function的異步方法之后,如你直接拿來用或者哪怕放在JS文件的最后,那也是無用的,因為異步調用還沒返回數據,JS已經執行完了或者直接拋某個異步function里的某個值undefined,這就是代碼沒生效的最終原因;
?
其實這種問題,就如同Delphi、C#等高級語言里不能跨線程調用有異曲同工之妙
?
所以解決思路就是:
將代碼放置在異步調用的function里,當調用完之后,無論頁面其它是否執行初始化完畢,反正另一線程都會繼續調用這個function,問題解決!
?
轉載于:https://www.cnblogs.com/sunshinewu85/archive/2011/07/17/2108958.html
總結
以上是生活随笔為你收集整理的【JQuery】初始化页面当异步加载时构建页面元素的顺序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 322. Coin C
- 下一篇: sharepoint 2010 time