2014-12-02 60 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 }); 
相關問題