将类似代码更改为一个用于所有文件

时间:2011-07-30 21:35:57

标签: javascript jquery

我的CMS有大约30种不同的模块,以下代码包含在每个模块的javascript中,除了一些变化,并且不知道是否有更简单的方法或更多我可以做的事情来消除要反复复制相同的代码以防万一我必须回去改变一些我只能做一次的事情。但是页面上不同的部分是指每个页面上的模板字不同,因为它代表了模块化名称。我不知道我是否可以将内容更改为itemID和其他内容。

$('.ask').jConfirmAction( {
    question : "Are you sure you want to delete the selected row?", 
    yesAnswer : "Yes", 
    cancelAnswer : "No", 
    onYes: function(evt) { 
      templates(evt.target); 
    }
});

$('.ask2').jConfirmAction( {
    question : "Are you sure you want to delete all selected rows?",
    questionClass: "question2", 
    onYes: function(evt){
        templatesArray(evt.target); 
    }
});

function templates(whatsThis) {
    var templateID = $(whatsThis).parents('td').find('img').attr('id');
    var dataString = 'templateID=' + templateID + '&deleteTemplate=True'; 

    var iRow = oTable.fnGetPosition( $(whatsThis).parents('tr').get(0));

    $.ajax({ 
        type: "POST", 
        url: "processes/templates.php", 
        data: dataString,
        success: function(data) {
            if (data.errorsExist) {
            } else {
                oTable.fnDeleteRow(iRow);     // remove the row from the table
                if(oTable.fnSettings().fnRecordsTotal() == 0) {
                    $('.bt_red').remove();
                    $('.bt_blue').remove();
                }
                if(oTable.fnSettings().fnRecordsTotal() <= 10) {
                    $('.bt_blue').remove();
                }
            } 
        }
    });
}


function templatesArray(whatsThis) {
    var myNewArray = new Array(); 
    var aRow = new Array();

    $('input:checkbox[name="templates"]:checked').each(function(i) { 
        myNewArray.push($(this).val());
        aRow.push($(this).closest('tr')[0]);
    }); 
    var dataString = 'templatesArray=' + myNewArray + '&deleteTemplatesArray=True'; 
    $.ajax({ 
        type: "POST", 
        url: "processes/templates.php", 
        data: dataString,
        success: function(data) {
            if (data.errorsExist) {
            } else {
                $(whatsThis).parents("tr").eq(0).hide(); 
                for (i in aRow)  // loop over the array of row indexes
                  oTable.fnDeleteRow(aRow[i]);
                if(oTable.fnSettings().fnRecordsTotal() == 0) {
                    $('.bt_red').remove();
                    $('.bt_blue').remove();
                }
                if(oTable.fnSettings().fnRecordsTotal() <= 10) {
                    $('.bt_blue').remove();
                }                      
            } 
        }
    });

}

1 个答案:

答案 0 :(得分:1)

代码执行不同的操作并访问不同的对象onYes。我认为它不能合并。也许一些其他类似的函数可以是但不是张贴的函数。