я следующее:динамической вставки флажка 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
Обновлен ответ, чтобы дать ответ на комментарий –
, который работает, но затем как я могу получить фактический элемент флажка, на который я нажал, вместо всего контейнера. «this» в функции дает мне весь контейнер, а не элемент, на который я нажал. – Kentor