Safari中丢失了HTML5数据属性

时间:2015-10-20 01:56:11

标签: javascript jquery html5 safari

我有一个jQueryUI模式,它根据HTML5数据属性加载其内容:

<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中,它们都发布了undefined:

$(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' ) );

我在各种地方使用dialog-ajax-form脚本,因此访问这个变量并不理想。任何人都可以解释为什么我在Safari中丢失这些值吗?

1 个答案:

答案 0 :(得分: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)的属性,否则会查找具有该属性的子项。