如何重构jquery;根据复选框选择“使只读”;
下午好 星期五请大家吃点东西 我有以下jquery功能,它根据和另一个输入的选择使输入只读: 这很好,很好,我希望它能正常工作 然而,在我的情况下,我有大约13个“checkbox1a”及其相关的checkbox1b和textbox1 正如您从脚本中看到的,我可以复制此代码,但我们都知道,复制和粘贴很糟糕(尽管在周五下午有上诉),因此我想知道如何着手攻击此代码,以便尽可能减少代码,但实现相同的结果如何重构jquery;根据复选框选择“使只读”;,jquery,input,refactoring,readonly,Jquery,Input,Refactoring,Readonly,下午好 星期五请大家吃点东西 我有以下jquery功能,它根据和另一个输入的选择使输入只读: 这很好,很好,我希望它能正常工作 然而,在我的情况下,我有大约13个“checkbox1a”及其相关的checkbox1b和textbox1 正如您从脚本中看到的,我可以复制此代码,但我们都知道,复制和粘贴很糟糕(尽管在周五下午有上诉),因此我想知道如何着手攻击此代码,以便尽可能减少代码,但实现相同的结果 非常感谢任何提示。您可以为所有这些内容编写一个单击事件 var $tr = $(this).cl
非常感谢任何提示。您可以为所有这些内容编写一个单击事件
var $tr = $(this).closest('tr');
// access checkbox b inside it
$tr.find('[id*=checkbox][id$="b"]').attr('disabled', 'disabled');
// access textbox inside it
$tr.find('input[type="text"]').attr('disabled', 'disabled');
您可以编写一个单击事件,以这种方式处理所有复选框单击事件 更好的方法是将类赋予复选框,而不是将id赋予复选框 复选框a-class=“checkboxa” 复选框b-class=“checkboxb” textbox-class=“textbox”
这将使您的代码更干净,更易于处理 您可以将一次单击事件写入所有这些
var $tr = $(this).closest('tr');
// access checkbox b inside it
$tr.find('[id*=checkbox][id$="b"]').attr('disabled', 'disabled');
// access textbox inside it
$tr.find('input[type="text"]').attr('disabled', 'disabled');
您可以编写一个单击事件,以这种方式处理所有复选框单击事件 更好的方法是将类赋予复选框,而不是将id赋予复选框 复选框a-class=“checkboxa” 复选框b-class=“checkboxb” textbox-class=“textbox”
这将使您的代码更干净,更易于处理 只需添加一些类并执行一点jQuery巫术。再见
可以不向禁用/启用的控件添加类,但使用类,您可以对启用/禁用的内容进行更精细的控制。只需添加一些类并执行一点jQuery Voodo。再见
可以不向禁用/启用的控件添加类,但使用类,您可以对启用/禁用的内容进行更精细的控制。您可以将所有内容合并到一个更改事件中-假设页面上只有这些复选框。。或者你可以给他们一个类来选择他们
$('input[type=checkbox]').change(function(){
var $this = $(this);
var $inputs = $this.closest('tr').find('input'); // get relative inputs
$inputs.not($this).prop('disabled',$inputs[0].checked);
// disable fields if first checkbox is checked
});
也是设置disabled属性的正确方法(jQuery 1.6+)。这是来自jQuery文档的
应使用.prop()方法来设置禁用和选中,而不是.attr()方法
您可以将所有内容合并到一个更改事件中—假设页面上只有这些复选框。。或者你可以给他们一个类来选择他们
$('input[type=checkbox]').change(function(){
var $this = $(this);
var $inputs = $this.closest('tr').find('input'); // get relative inputs
$inputs.not($this).prop('disabled',$inputs[0].checked);
// disable fields if first checkbox is checked
});
也是设置disabled属性的正确方法(jQuery 1.6+)。这是来自jQuery文档的
应使用.prop()方法来设置禁用和选中,而不是.attr()方法
我刚刚解决了类似的问题。我是这样处理的: 在复选框和文本框中添加一个类,然后将ID的索引移动到字符串的末尾(使jquery变得更容易),因此它可以如下所示: 这是我的建议
我刚刚解决了类似的问题。我是这样处理的: 在复选框和文本框中添加一个类,然后将ID的索引移动到字符串的末尾(使jquery变得更容易),因此它可以如下所示: 这是我的建议