之前寫了一個自動增列元件,點到最後一列時會自動產生新的一列,套用了 jQuery 之後,發現既有的欄位都有生效,但新增一列出來的欄位就沒生效,我嘗試在新增一列後,重新執行一次 jQuery 的 API (bind 方法),但仍然無效。

經追蹤 jQuery 的 source 後,我發現只要有被 jQuery "碰過"的 element ,都會加上 jQuery1200220xxx ="xx" 的屬性,應該是 jQuery 為了加快第二次 access 該 element  的速度所留下的"痕跡",而我的自動增列因為是複製最後一列的所有 html 產生新的 element,當然這個 jQuery 留下的 "痕跡" 也會被一併複製,所以新產生出來的 element 仍然擁有舊的 jQuery ID,雖然有重新執行 JQuery 的 API (其實是要 bind 一些方法),但 JQuery 發現在 cache 中已存在該 ID 了時就會自動 skip 掉,所以新列就完全沒 bind 到任何方法。
解決方法:
過濾新列的 html ,將 JQuery 的 ID 殺掉,如下:


    var expr=/jQuery\d+=(\"|\')?\d+(\"|\')?/g ;
    return s.replace(expr,"");

這樣就會將   jQuery1239298329="23" 這類的 ID 去掉了。

加了這行後,一切正常了 ! 又多解了 JQuery 啦~

創作者介紹
創作者 itFarmer 的頭像
itFarmer

itFarmer

itFarmer 發表在 痞客邦 留言(0) 人氣()