我不确定为什么这段代码不起作用。这可能是因为复选框位于coldfusion div页面上。单击复选框后,我想更新个人记录。
单击该按钮时,ReInitialize功能起作用。斑马条纹表的代码适用于初始表单加载,但不会在后续加载时发布到自身。复选框点击功能永远不会被击中。我可以在Firebug中设置一个断点,它永远不会停止。
<script type="text/javascript">
$(document).ready(function () {
$('#ReInitialize').click(function () {
var ReInitAnswer = confirm('Are you sure you want to start over from scratch?');
if (ReInitAnswer) {
$.ajax({
type: "POST",
url: "cfc/basic.cfc?method=TruncateTemp",
error: function (xhr, textStatus, errorThrown) {
// show error
alert(errorThrown);
} /*
,
success: function (msg) {
alert("Data Saved: " + msg);
} */
});
$('#ReInitialize').attr('checked', true);
} else {
alert('canceled');
}
});
var table = $('#articles'),
rows = table.find('tr'),
cells, background, code;
for (var i = 0; i < rows.length; i += 1) {
cells = $(rows[i]).children('td');
code = $(cells[0]).value();
if (code % 2 == 0) {
background = '#e29e6e';
} else {
background = '#f9cf80';
}
$(rows[i]).css('background-color', background);
}
$('.notdupe').bind('change', function () { // <----------------------
// If checked
if ($(this).is(":checked")) {
$.ajax({
type: "POST",
url: "cfc/basic.cfc?method=SetNotDupe",
data: "indivNum=" + $(this).value() + "&SetValue=" + $(this).checked(),
error: function (xhr, textStatus, errorThrown) {
// show error
alert(errorThrown);
}
});
}
});
});
</script>
<cfif qPages.not_dupe_flag>
<input class="notdupe" type="checkbox" name="indivID" value="#userid#" checked />
<cfelse>
<input class="notdupe" type="checkbox" name="indivID" value="#userid#" />
</cfif>
我将其从点击事件更改为更改事件。
答案 0 :(得分:1)
它看起来应该正确绑定。但我认为$('.notdupe').bind()
函数中的AJAX调用范围存在问题。
在$.ajax.data
代码中,我认为$(this)
不再引用$('.notdupe')
,而是引用AJAX事件。另外,我不确定.checked()
应该做什么。
$('.notdupe').bind('change', function (e){
// If checked
if ($(this).is(":checked")) {
$.ajax({
type: "POST",
url: "cfc/basic.cfc?method=SetNotDupe",
data: "indivNum=" + $(e.target).value() + "&SetValue=" + $(e.target).is(":checked")),
error: function (xhr, textStatus, errorThrown){
// show error
alert(errorThrown);
}
});
}
});
答案 1 :(得分:0)
您是否尝试过使用.on()
代替.click()
?
替换:
$('#ReInitialize').click(function() {
使用:
$('#ReInitialize').parent().on('click', '#ReInitialize', function() {
我不清楚你的所有代码是做什么的,但如果#ReInitialize
在某些时候被替换,你将失去你的点击处理程序。 .on()
的此实施将适用于#ReInitialize
以及任何未来的实例化。
P.S。如果你使用的是旧版本的jQuery,它将是.live('click', function() {