从JSON回复中附加HTML时,事件处理程序似乎失去其事件绑定。在使用.live()
函数时,处理程序现在似乎工作。jQuery动态复选框事件处理
$.each(result[0], function(i,wellList) {
$jsonResult = wellList["@name"];
$uid = wellList["@uid"];
$dynamicCheckBoxDiv += '<input type="checkbox" name="checkbox-1" value="'+ $uid
+ '" class="wellCheck" id="checkbox-'+i+'" />' +
'<label for="checkbox-'+i+'">' + $jsonResult + '</label>';
});
$dynamicCheckBoxDiv += '</fieldset></div>';
//Append results to div
$("#dynamicCheck").append($dynamicCheckBoxDiv).page();
$(".wellCheck").live('click', (function() {
此事件现在会在点击功能运行时触发。然而,点击复选框几次后,它会随机将检查与错误框关联起来,并通过一次单击就开始触发点击事件触发。有没有人见过这个?
另外:如何添加一个方法来检查单独按钮中的所有框?因为他们被动态地添加它似乎只是绕过此功能:
// When select No wells is clicked this method is run
$('#selectNone').click(function() {
$('#dynamicCheck .wellCheck').find(':checkbox').attr('checked', 'checked');
});
它进入的方法,但似乎没有任何检查的箱子。我已将jQuery和jQuery移动添加到此页面,并且这两种方法都存在于document.ready
之下。
javascript有定义你知道的局部变量的方法... *** var *** - 请使用它们而不是污染范围。 – rlemon
变量是本地的。它们在每个之上被初始化(仍然在getJSON返回函数内)。每次我浏览'each'循环时,是否有理由重新创建变量? –
不,对不起,我没有意识到 - 我认为你是在范围之外创建一个全局变量。 – rlemon