jQuery中是否有预制函数,当您单击按钮时,它将启用一行。然后,如果再次单击它,它将禁用该行。我发现了toggle()和toggleClass()。但它在调用函数时确实有效。这个想法有点像这样,但我知道语法是错误的。
的jQuery
function disableRows(){
$("#test1table tbody tr").each(function() {
$(this).find('input:text').prop('disabled', true);
});
function enableRows(){
$("#test1table tbody tr").each(function() {
$(this).find('input:text').prop('disabled', false);
});
$(document).ready(function() {
$('.yearButt').click(function(){
$(this).toggleClass(enableRows(), disableRows());
});
});
答案 0 :(得分:1)
您可以简化代码:
$(document).ready(function() {
$('.yearButt').click(function(){
var enabled = parseInt($(this).data('enabled'));
$("#test1table tbody tr input:text").prop('disabled', enabled );
$(this).data('enabled', !enabled)
});
});
答案 1 :(得分:0)
我认为以下代码可以帮助您理解要求:
参考:Enable Disable Controls in a table row
$(document).on('change', '.chkView', function() {
$(this).closest('tr').find('.chkEdit, .chkDelete').prop('disabled', !this.checked);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="table_forms">
<tr>
<td><input type="checkbox" class="chkView"/>View</td>
<td><input type="checkbox" class="chkEdit" disabled/>Edit</td>
<td><input type="checkbox" class="chkDelete" disabled/>Delete</td>
</tr>
<tr>
<td><input type="checkbox" class="chkView"/>View</td>
<td><input type="checkbox" class="chkEdit" disabled/>Edit</td>
<td><input type="checkbox" class="chkDelete" disabled/>Delete</td>
</tr>
</table>
答案 2 :(得分:0)
首先,您正在寻找.toggle()
,而不是.toggleClass()
:)
则...
这不符合您的期望:
$(this).toggle(enableRows(), disableRows());
这是立即调用两个函数 ,然后根据这些函数的结果进行切换。 (两者都是undefined
。)而不是执行函数,你只想引用函数,以便.toggle()
根据它们执行它们。它的逻辑:
$(this).toggle(enableRows, disableRows);
注意:如果您的代码段已完成,那么您也忘记了在每个功能之后关闭}
。简单的错字。
答案 3 :(得分:0)