2015-10-20 35 views
0

丟失的HTML5數據屬性我有它加載基於HTML5的數據其內容屬性一個jQueryUI的模式:在Safari

<button id="add-dates-button" name="add-dates-button" href="#" class="dialog-ajax-form" data-table="jto-dates-add" data-title="Add Job" data-id="<?=$jto_id?>">Add Date(s)</button> 

與按鈕的點擊觸發以下(部分)腳本,我得到的變量在FF打印控制檯就好了。然而,在Safari,他們都交未定義:

$(document).on('click','.dialog-ajax-form',function(e){ 
    e.preventDefault(); 
    var targete = $(e.target); 
    var tbl = $(e.target).data('table'); 
    var id = $(e.target).data('id'); 
    var title = $(e.target).data('title'); 
    console.log(title); 
    console.log(id); 
    console.log(targete); 
    console.log(tbl); 

如果我訪問的屬性在Safari與以下,但是,我可以得到價值:

console.log(document.getElementById('add-dates-button').getAttribute('data-table')); 

我用的對話框,ajax-在各種地方形成腳本,因此訪問這個變量具體是不理想的。任何人都可以解釋爲什麼我在Safari中丟失了這些值?

+0

@dandavis有HTML5'data- *'支持; https://api.jquery.com/data/#data-html5 –

+0

@DaveAnderson:我說「設置data-attribs」,我支持......說,我誤讀了,而且他沒有設置.. – dandavis

+0

@ dandavis,是不是已經在按鈕本身設置的屬性?我對.data()的理解是我可以訪問數據屬性。 使用.attr(「數據名稱」)具有相同的結果。 – thebarless

回答

2

您確定$(e.target)元素是Safari中的按鈕嗎?您的選擇器.dialog-ajax-form不是特定於<button id="add-dates-button">元素,但我認爲這包含在表單中。

你需要得到找到該屬性的元素,或者用:

var $target = $(e.target); 
var tbl = $target.data('table') || $target.find('[data-table]').data('table'); 

這將使用屬性爲$(e.target)如果它有它,否則查找與屬性的孩子。

+0

也可以將選擇器調整爲'$(document).on('click','#add-dates-button'' – guest271314

+0

@ guest271314不確定是否有多個具有相同'data- *'屬性的不同形式的按鈕。 –

+0

事實證明,在Safari瀏覽器中,e.target掛鉤了一個元素 – thebarless