[英]Can I combine two functions into one using Javascript?
我有以下代碼想要簡化。 使用javascript和jQuery,有一種簡單的方法可以將這兩個功能結合在一起嗎? 大多數代碼是相同的,但是我不確定如何創建一個單獨的函數,該函數根據所單擊的內容而有所不同。
$(document).ready(function () {
$('#ListBooks').click(ListBooks);
$('#Create').click(Create);
});
function Create() {
var dataSourceID = $('#DataSourceID').val();
var subjectID = $('#SubjectID').val();
var contentID = $('#ContentID').val();
if (dataSourceID && dataSourceID != '00' &&
subjectID && subjectID != "00" &&
contentID && contentID != "00")
{
var e = encodeURIComponent,
arr = ["dataSourceID=" + e(dataSourceID),
"subjectID=" + e(subjectID),
"contentID=" + e(contentID)];
window.location.href = '/Administration/Books/Create?' + arr.join("&");
} else {
alert('Datasource, Subject and Content must be selected.');
}
return false;
}
function ListBooks() {
var dataSourceID = $('#DataSourceID').val();
var subjectID = $('#SubjectID').val();
var contentID = $('#ContentID').val();
if (dataSourceID && dataSourceID != '00' &&
subjectID && subjectID != "00" &&
contentID && contentID != "00") {
var e = encodeURIComponent,
arr = ["dataSourceID=" + e(dataSourceID),
"subjectID=" + e(subjectID),
"contentID=" + e(contentID)];
window.location.href = '/Administration/Books/ListBooks?' + arr.join("&");
} else {
alert('Datasource, Subject and Content must be selected.');
}
return false;
}
這樣的事?
$(document).ready(function () {
$('#ListBooks').click(function() { yourNewFunction('ListBooks'); });
$('#Create').click(function() { yourNewFunction('Create'); });
});
yourNewFunction(type) {
// code of both functions
if ('ListBooks' == type) {
// code for ListBook
} else {
// code for Create
}
};
我嘗試將兩個函數都合並到一個事件觸發器中。
看看是否有幫助,如果我錯過了其他任何地方(這兩個代碼都不常見),我可以幫助您進行編輯。
$(document).ready(function () {
$('#ListBooks').unbind('click').bind('click', function() {
iClicked("list");
});
$('#Create').unbind('click').bind('click', function() {
iClicked("create");
});
});
var url_map = {
'create':'/Administration/Books/Create',
'list':'/Administration/Books/ListBooks'
};
function iClicked(trig) {
if (!url_map[trig]) {
alert("Unsupported event");
return false;
}
var dataSourceID = $('#DataSourceID').val();
var subjectID = $('#SubjectID').val();
var contentID = $('#ContentID').val();
if (dataSourceID && dataSourceID != '00' &&
subjectID && subjectID != "00" &&
contentID && contentID != "00")
{
var e = encodeURIComponent,
arr = ["dataSourceID=" + e(dataSourceID),
"subjectID=" + e(subjectID),
"contentID=" + e(contentID)];
window.location.href = url_map[trig] + '?' + arr.join("&");
} else {
alert('Datasource, Subject and Content must be selected.');
}
return false;
}
您需要根據您在$('#ListBooks')
和$('#Create')
傳遞的ID,使函數執行不同的操作。 因此,您可以使用this.id
來檢索值,而不是將id硬編碼到函數中。 調整了這一行:
$('#ListBooks').click(combinedFunction);
和這個
window.location.href = '/Administration/Books/'+ this.id + '?' + arr.join("&");
最終代碼:
$(document).ready(function () {
$('#ListBooks').click(combinedFunction);
$('#Create').click(combinedFunction);
});
function combinedFunction() {
var divId = this.id;
var dataSourceID = $('#DataSourceID').val();
var subjectID = $('#SubjectID').val();
var contentID = $('#ContentID').val();
if (dataSourceID && dataSourceID != '00' &&
subjectID && subjectID != "00" &&
contentID && contentID != "00")
{
var e = encodeURIComponent,
arr = ["dataSourceID=" + e(dataSourceID),
"subjectID=" + e(subjectID),
"contentID=" + e(contentID)];
//Use this.id to retrive the value
window.location.href = '/Administration/Books/'+ this.id + '?' + arr.join("&");
} else {
alert('Datasource, Subject and Content must be selected.');
}
return false;
}
function doBookAction(action) {
var dataSourceID = $('#DataSourceID').val();
var subjectID = $('#SubjectID').val();
var contentID = $('#ContentID').val();
if (dataSourceID && dataSourceID != '00' &&
subjectID && subjectID != "00" &&
contentID && contentID != "00") {
var e = encodeURIComponent,
arr = ["dataSourceID=" + e(dataSourceID),
"subjectID=" + e(subjectID),
"contentID=" + e(contentID)];
window.location.href = '/Administration/Books/' + action + '?' + arr.join("&");
} else {
alert('Datasource, Subject and Content must be selected.');
}
return false;
}
$('#ListBooks,#Create').click(function() { doBookAction($(this).attr('id')); });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.