Javascript 如何迭代js函数?
我有一些重复按钮控制函数,如下所示,有没有一种方法可以迭代它们并减少代码量Javascript 如何迭代js函数?,javascript,jquery,html,materialize,visualforce,Javascript,Jquery,Html,Materialize,Visualforce,我有一些重复按钮控制函数,如下所示,有没有一种方法可以迭代它们并减少代码量 $('[id$=cBC1]').change(function () { if ($(this).is(':checked')) { $(".cBC1_Row").prop("disabled", true); } else { $(".cBC1_Row").prop("disabled", false); } $('s
$('[id$=cBC1]').change(function () {
if ($(this).is(':checked')) {
$(".cBC1_Row").prop("disabled", true);
}
else {
$(".cBC1_Row").prop("disabled", false);
}
$('select').material_select();
});
$('[id$=cBC2]').change(function () {
if ($(this).is(':checked')) {
$(".cBC2_Row").prop("disabled", true);
}
else {
$(".cBC2_Row").prop("disabled", false);
}
$('select').material_select();
});
...
按要求添加HTML代码,它被包装在visualforce页面中,每个复选框将管理表中同一行上的文本字段
<table>
...
<tbody>
<tr>
<td>
<apex:inputCheckbox id="cBC1"/>
<label for="j_id0:j_id1:cBC1"></label>
</td>
<td>
<div class="input-field">
<apex:inputField styleClass="validate cBC1_Row"/>
</div>
</td>
<td>
<div class="input-field">
<apex:inputField styleClass="validate cBC1_Row"/>
</div>
</td>
</tr>
<tr>
<td>
<apex:inputCheckbox id="cBC2"/>
<label for="j_id0:j_id1:cBC2"></label>
</td>
<td>
<div class="input-field">
<apex:inputField styleClass="validate cBC2_Row"/>
</div>
</td>
<td>
<div class="input-field inline">
<apex:inputField styleClass="validate cBC2_Row"/>
</div>
</td>
</tr>
</tbody>
</table>
...
如果可以重构事件处理程序来处理每个元素,那么可以编写一个jquery选择器,并将相同的匿名事件处理程序绑定到这两个元素。如果看不到脚本与之交互的元素的标记,就很难确定此重构是否可行。是的,按照您的模式可以执行:
for (let i = 1; i < amoutOfIds; i++) {
$('[id$=cBC'+i+']').change(function () {
if ($(this).is(':checked')) {
$(".cBC"+i+"_Row").prop("disabled", true);
}
else {
$(".cBC"+i+"_Row").prop("disabled", false);
}
$('select').material_select();
});
}
for(设i=1;i
您必须正确设置所拥有的
amountOfIds
,并且您还应该更改让i=1
以您拥有的第一个id开始。您可以在选择器中删除最后一个数字,并使用“attribute contains”代替,前提是您没有包含字符串cBC
的多个元素
另一个更好的选择是使用类
$('[id*=cBC]').on('change', function () {
$(".cBC"+ this.id.match(/\d+$/)[0] +"_Row").prop("disabled", this.checked);
$('select').material_select();
});
从你的代码看来,ID是匹配的。 为什么不使用:
$('[id^=“cBC”]')。更改(函数(){
var_id=$(this.id();
$(“+”id+“\u Row”).prop(“disabled”,$(this).is(“:checked”);
$('select')。材料选择();
});
请添加html以参数化不同的内容,只要有不同的参数集,就可以多次运行该函数。我打赌您的html可以简化。。。