如何将引用保存到表格行中的复选框?

问题描述:

复选框被选中后,我显示一个表单。如果表单被取消,我希望取消选中该框。如何将引用保存到表格行中的复选框?

编辑

在表形式(第二种形式),滚动到复选框,并检查一个,然后去第一种形式,点击取消按钮。向下滚动到您检查的框。

jsfiddle

在HTML,我定义:

<input id="current-checkbox" type="checkbox" class="hidden" /> 

在相关联的JS我保存的当前位置:

var curRow = $(this).closest('.trow').find('input[type=checkbox]'); 
$("#current-row",curRow); 

的console.log示出:

$("#current-checkbox") 
[<input id=​"current-checkbox" type=​"checkbox" class=​"hidden">​] 

取消形式JS:

$("#cancel-email").on('click', function (e) { 
    debugger 
    e.preventDefault(); 
    setTimeout(function() { showMessage(1, 'Emails not sent.') }, 2000); 
    setTimeout(function() { hideEmailElems(); }, 2000); 
    $("#current-checkbox").find("input[type=checkbox]").prop("checked", false).focus(); 
}); 

的console.log:

$("#current-checkbox").find("input[type=checkbox]").length 
0 

什么是正确的jQuery选择要找到保存的复选框?

+1

我不能按照你的问题。创建一个CMVE – Amit

+1

你不需要'.find()'语句,'id'选择器会得到一个正确的元素。 – Polyov

+0

你可以使用$(“#current-checkbox”)。prop(“checked”,false)。 不需要使用.find()函数或.closet()函数。 –

$("#current-checkbox")只选择一个元素(即复选框),因为它是通过id选择器。

find(selector)方法找到元素匹配的元素中选择匹配,所以在这种情况下$("#current-checkbox").find("input[type=checkbox]")空,因为复选框元素没有任何子元素。

因此,你将不需要那.find()部分。 $("#current-checkbox")就够了。

请注意,在有效的HTML中,the id attribute必须是唯一的。所以,id选择符最多与一个元素匹配。

如何保存对表格行中复选框的引用?

您不需要保存对选中复选框的引用。您可以改用:checked选择器从任何地方找到它。

$("#cancel-email").on('click', function(e) { 
    // Un-check the checked checkbox 
    $(".trow input[type=checkbox]:checked").prop("checked", false); 

    // Hide the E-Mail box 
    $('#main-container').hide(); 
}); 
+0

有意义,但在实现解决方案后仍然检查该框(即使控制台显示它已执行:$(“#current-checkbox”)。prop(“checked”)false)? –

+0

@rontornambe您可以创建一个最小的现场演示吗? –

+0

对于迟到的编辑 - 我正在医院工作。对不起,粗糙的jsfiddle。进入治疗之前,我可能需要一段时间才能再次回复,所以请花时间。 –