我有以下幾點:動態複選框插入,jQuery的onchange事件失去
somefile.php
$("document").ready(function() {
var handler = function(data) {
var JsDiv = document.getElementById("somediv");
JsDiv.innerHTML = data;
};
$("input[type='checkbox']").change(function() {
console.log("execute lots of code in this function");
//I need to execute this part again with the new checkboxes
//.
//.
//.
//and then
$.ajax({
url: "ajaxFile.php",
success: function(data, textStatus, XMLHttpRequest) { handler(data); }
});
});
});
<div id="somediv">
<input type="checkbox" id="someid1" value="anything1" /> checkbox1
<input type="checkbox" id="someid2" value="anything2" /> checkbox2
</div>
ajaxFile.php
echo "
<input type='checkbox' id='someid3' value='anything3' /> checkbox3 <br />
<input type='checkbox' id='someid4' value='anything4' /> checkbox4
";
的問題是,$( 「輸入[類型= '複選框']」)。變化(函數(){})獲取當我第一次加載執行就好頁面,但是一旦新的複選框已經通過ajax加載,它們就不受該函數的限制。我已經看到關於bind()和live()的一些東西,但我不太清楚如何將新的複選框綁定到我已經定義的函數。我需要執行.change()中的一些代碼。我會在.change()之外提取該代碼,然後調用該函數,但我不太確定如何執行此操作。如果我的問題不清楚,請讓我知道,我會重新組合。感謝您的幫助。
但如何我出口是在同一個地方的console.log代碼(「在這個函數執行大量的代碼」);是這樣我可以重複使用它,而不是兩次寫入相同的函數。 – Kentor 2012-03-27 05:23:41
更新了答案,以提供對評論 – 2012-03-27 05:30:04
有效的迴應,但是如何獲取我點擊的實際複選框元素而不是整個容器。函數中的「this」給了我整個容器,而不是我點擊的元素。 – Kentor 2012-03-27 06:41:04