2014-12-19 92 views
0

使用jQuery,我動態生成單選按鈕,但是對每個按鈕進行「單擊然後提示」檢查,只有第一個單選按鈕響應(這是原始硬編碼的按鈕)。無法訪問動態創建的單選按鈕的值

在我的實際頁面中使用腳本時,所選的單選按鈕會成功傳遞給服務器(其中任何一個),所以我知道每個動態創建的單選按鈕都會獲取值並傳遞它。在Firebug中,每個元素的結構與第一個硬編碼結構相同。

動態創建的表單元素沒有完全嵌入在DOM中?

也許問題在於我是如何聆聽點擊,使用'this'還是抓取'value'?在的jsfiddle

示例代碼:http://jsfiddle.net/2ny6c0hq/8

或...

HTML:

<script src="scripts/add_radio.js" language="Javascript" type="text/javascript"></script> 

<div class="input_fields_wrapper"> 
    Entry 1 <input class="radio_button" type="radio" name="correct_answer" value="answer_1" /> 
</div> 

<div id="add_field">Add More Fields</div> 

JAVASCRIPT(腳本/ add_radio.js):

$(document).ready(function() { 

    var max_fields  = 10; //maximum radio allowed 
    var wrapper   = $(".input_fields_wrapper"); //Fields wrapper 
    var add_button  = $("#add_field"); //Add button ID 

    var x = 1; // initial radio count 
    $(add_button).click(function(e){ // on add input button click 
     e.preventDefault(); 
     if(x < max_fields){ 
      x++; // increment counter 
      $(wrapper).append("<br />Entry " + x + " <input type='radio' class='radio_button' name='correct_answer' value='answer_" + x + "'>"); 
     } 
    }); 

    $(".radio_button").on("click", function(){ 
     alert($(this).val()); 
    }); 

}); 

回答

1

您需要使用事件委託來處理動態內容處理程序:

$(".input_fields_wrapper").on("click", ".radio_button", function() { 
+0

謝謝,這個工程。 這裏是jQuery關於事件委派的文檔,他們的例子描述了這裏發生了什麼。 http://learn.jquery.com/events/event-delegation/ – MarsAndBack