1

我正在使用neils_forms與Rails 4以及turbo-links + jQuery插件,使其重新加載頁面。一旦我添加了一個嵌套的字段,其中應該觸發事件的標記,它沒有做一些,看起來像只有初始頁面加載的內容可以觸發js事件。新插入的HTML不與JS事件處理與Rails嵌套表格

例如:

$(document).ready(function(){ 
    $('.address_input_type').on('change', function(){ 
    showAppropriateAddressFields(this); 
    }) 
}); 

所以如果「.address_input_type」最初是在頁面上,但如果在添加之後失敗function showAppropriateAddressFields將閃光。有任何想法嗎?

回答

1

由於元素新插入的,你需要使用event delegation

$(document).ready(function(){ 
    $(document).on('change', '.address_input_type', function(){ 
    showAppropriateAddressFields(this); 
    }) 
}); 

儘量找比document更緊密的父元素(如div容器)作爲選擇使用,如使用document效率不高。

0

如果您在某個類的頁面加載時查詢DOM,那麼您將返回一個類似數組的對象,當其他節點具有該類時,它將不會自行更新。從頭開始將它附加到頁面,並將其設置爲樣式「display:none」。

+0

@null有一個更清潔的解決方案。正如他所建議的那樣,這是一個更昂貴的操作。 – adrichman

+0

我也是在頁面加載後動態地創建字段(我不知道結果)。感謝您解釋過程! – barnett