元素ID作为函数中的变量

时间:2017-01-19 16:34:51

标签: javascript jquery

我有一个jQuery代码,它假设对具有传递ID名称的元素产生影响

function updateElements(tab_name) {
    var tab_name = tab_name;

    // ...

    $("#table-responsive-" + tab_name).load(url, function(resp, status, xhr, tab_name) {
        $('[data-toggle="tooltip-pass"]').tooltip({ 'placement': 'bottom' });
        $('[data-toggle="tooltip"]').tooltip({ 'placement': 'top'});
        $('[data-toggle="popover"]').popover({
            trigger: 'hover',
            'placement': 'top', 
            'container': 'body'
        });

        $('#' + tab_name).DataTable({
            "paging": false,
            "columnDefs": [{ 
                "orderable": false, 
                "targets": 4 
            }]
        });
    });
}

"#table-responsive-" + tab_name工作正常但$('#' + tab_name).DataTable()没有。我错过了什么线索?

2 个答案:

答案 0 :(得分:1)

$.load()的回调函数没有通过4个参数,它只传递了3个。你的第四个参数完成了'完成'因此,函数变为undefined - 并且由于您已使用此函数参数隐藏了原始tab_name,因此选择器无法工作:

$("#table-responsive-"+tab_name).load(url, function(resp, status, xhr, tab_name) {
//tab_name was never passed in, remove it from args list
});

这是the signature,用于完成'函数来自$.load():

的文档
  

完整   类型:Function(String responseText,String textStatus,jqXHR   jqXHR)请求时执行的回调函数   完成。

答案 1 :(得分:0)

您将tab_name作为全局变量传递,并将参数传递给加载函数。因此,似乎该参数正在替换全局tab_name变量的值。这就是我能找到的全部内容。尝试替换参数名称。