使用不同的 ID 选择器创建函数



如何创建一个可以接受不同id的函数

我正在尝试创建一个函数代码以减少代码冗余

法典:

function getTableData(_tableName)
{
var array = [];
var headers = [];
var tableName = _tableName;
var jsonData = '';
$('#'+tableName+ 'th:not(:last-child)').each(function()
{
headers.push($(this).attr('data-name'));
})

$('#'+tableName+ 'tbody tr').each(function() 
{
var arrayItem = {};
$(this).find('td:not(:last-child)').each(function(i) 
{
arrayItem[headers[i]] = $(this).text();
})
array.push(arrayItem);
});

var jsonData = JSON.stringify(array)
return jsonData;
}
$('#btn-save-firstTable').on('click', function()
{  
var valueFd = getTableData('firstTable') //already tried $('#firstTable')  
$.ajax(
{
url: 'ajax/submit-application.php',
method:"POST",
dataType: "text",
data: { firstTable:  valueFd },
success:function(data)
{
alert(data);
}
});
});
$('#btn-save-secondTable').on('click', function()
{  
var valueSd = getTableData('secondTable') //already tried $('#secondTable')  
$.ajax(
{
url: 'ajax/submit-application.php',
method:"POST",
dataType: "text",
data: { secondTable:  valueSd },
success:function(data)
{
alert(data);
}
});
});

如何泛化函数?或者为任何表 ID 动态化它。 或者对我所指的内容有任何建议?

你可以试试这个- 为了减少代码冗余,您可以创建一个函数,该函数将采用两个参数 - tableSaveBtn 和 tableID

该函数的代码将如下所示-

function getdata(tableSaveBtn,tableID) 
{
$(tableSaveBtn).on('click', function()
{  
var valueFd = getTableData(tableID)  
$.ajax(
{
url: 'ajax/submit-application.php',
method:"POST",
dataType: "text",
data: { tableID:  valueFd },
success:function(data)
{
alert(data);
}
});
});
}

你可以从getTableData((函数调用这个getData((函数,以获得你想要的尽可能多的表ID,就像这样-

getData('#btn-save-firstTable','firstTable');
getData('#btn-save-secondTable','secondTable');

希望这个答案对你有帮助。

最新更新