2014-12-02 110 views
0

我有两个表需要有不同的ID或他们不会工作。我使用的第三方数据表代码使用ID区分浏览器中的不同表格。有没有办法让两个HTML ID链接到一个JavaScript函数?

<table id="promo" class="display"> 
<table id="official" class="display"> 

但我需要他们都链接到相同的脚本功能。正如你可以看到下面,我有一个#promo,一个用于#official,但他们使用的是完全相同的代码都:

$(document).ready(function() { 
    $('#promo').DataTable({ 
     // does a TON of stuff here 
    }); 

    $('#official').DataTable({ 
     // does a TON of stuff here 
    }); 

有没有办法让这两个表链接到同一代码的脚本?

+0

我觉得这是好事,知道有充分理由的表需要不同的ID的工作 - 非唯一ID不是语义有效的HTML和浏览器行为在技术上是未定义遇到不唯一的ID时,尽管他们倾向于仅选择第一次出现。 – Terry 2014-12-02 01:57:45

回答

6

有没有办法让两个表链接到脚本中的相同代码?

是:

$('#promo, #official').DataTable({ 
    // does a TON of stuff here 
}); 

这将使用CSS group selector,但您可以使用这两个元素匹配任何其他选择。根据您的问题,例如,.display(一class selector)的确,以及(只要它还不匹配其他元素还没有显示):

$('.display').DataTable({ 
    // does a TON of stuff here 
}); 
4
$('.display').each(function(){ 
    $(this).DataTable({ 
     // does a TON of stuff here 
    }); 
}); 

这样你就不必手动添加每个id。只需在元素中添加.display即可。

+1

不,您不必使用'each',jQuery将在这里执行**隐式迭代**。 – Leo 2014-12-02 02:25:40

+0

何时需要'each()'? – Anubhav 2014-12-02 02:27:32

+1

@Anubhav:这取决于如何编写插件... – dandavis 2014-12-02 02:29:28

0

或者:

var $DTs = $(".someSemanticClassForAllIntendedTables"); //for easy reference elsewhere 
$DTs.DataTable({ //options }); 
相关问题