我有以下几点:动态复选框插入,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