[英]Passing Multiple arguments to jQuery Function
我有一个函数,它从各种输入(多个值)获取数据并填充到表中。
这是jquery片段:
var row =1
$("input[name='product_id[]']").each(function() {
$rows[row].cells[0].innerText = $(this).val();
row = row+1;
});
row=1;
$("input[name='product_name[]']").each(function() {
$rows[row].cells[1].innerText = $(this).val();
row = row+1;
});
row=1;
$("input[name='manufacturer[]']").each(function() {
$rows[row].cells[2].innerText = $(this).val();
row = row+1;
});
row=1;
$("input[name='composition[]']").each(function() {
$rows[row].cells[3].innerText = $(this).val();
row = row+1;
});
我想知道我是否可以将多个迭代器组合到一个迭代器中?
谢谢Kiran
创建一个通用函数,这将有助于您的行逻辑 , 它在每次迭代之前获得值1
function iteratorOperation(){
}
然后将其传递给迭代器,
$("input[name='product_id[]']").each(iteratorOperation);
row=1;
$("input[name='product_name[]']").each(iteratorOperation);
row=1;
$("input[name='manufacturer[]']").each(iteratorOperation);
row=1;
$("input[name='composition[]']").each(iteratorOperation);
您可以用逗号加入选择器:
$("input[name='product_id[]'], input[name='product_name[]'], input[name='manufacturer[]'], input[name='composition[]']")
.each(function() {
// ...
});
要更干,请使用数组:
const selectorStr = ['product_id', 'product_name', 'manufacturer', 'composition']
.map(str => `input[name='${str}[]']`)
.join(',');
$(selectorStr).each(function() {
// ...
});
如果除了第一次迭代之外,你需要将row
设置为1
,那么:
['product_id', 'product_name', 'manufacturer', 'composition']
.forEach((str, i) => {
if (i !== 0) {
row = 1;
}
$(`input[name='${str}[]']`).each(function(){
// etc
});
});
使用,
分隔多个选择器
$("input[name='product_id[]'],input[name='product_name[]'],input[name='manufacturer[],input[name='composition[]']").each(function() {
});
也许这很有意思?
注意逃避[]
const fieldNames = ["product_id[]", "product_name[]", "manufacturer[]", "composition[]"];
const selector = fieldNames.map(item => `input[name='${item}\\\\[\\\\]']`).join(", ")
$rows.each((row) => { // not sure if $rows is a jQuery object or html collection
$(selector).each(() => {
let idx = fieldNames.indexOf(this.name)
row.cells[idx].innerText = $(this).val(); // jquery object or collection?
})
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.