Drupal Ajax 執行後 Javascript 會沒反應

前言

當你在寫 Drupal 前台的 Javascript 時, 可能曾發生過當頁面有 Ajax 時,會導致你所撰寫的 Javascript code 會完全無效。會有這種情況,其實是因為當頁面部分元素被 Ajax 修改後,你所撰寫好的程式碼並不會動態的重新抓取更新過後的元素,這是一件令人頭痛的事啊。不過也別覺得這東西是無解,小編這裡有三個方法提供給各位,讓你們再也沒煩惱。

方法一:Drupal behavior

這是 Drupal 提供給前端開發者和模組開發者的 API 每當 Drupal Ajax 被執行後, 會把開發者所撰寫好的 Javascript 再重新讀取一次。如果你對這個東西很陌生的話,可以來參考這篇,他非常詳細的告訴你 behavior 的運作方式。

方法二: Jquery on() event function

jQuery 在 1.7 版本以後非常推薦前端開發者使用 on()來綁定事件,它有非常多的好處,其中一個好處是能解決動態元素的問題。

方法三:Javascript getElementById

如果你是使用原生 Javascript 寫法的話,相信你對這個東西並不陌生,它一樣也能抓取動態元素。

結論

Drupal Ajax 對於初心者來說可是一件非常蛋疼的,但是如果你已經理解它的運作方式,你一定會覺得它整個架構邏輯,就一個字形容 “屌”,小編比較推薦讀者們使用“ Drupal behavior” 解決 Javascript 無效的問題,希望這篇能幫到各位。