HTML5 Safari 中丢失的数据属性

HTML5 data attributes lost in 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 中,它们都是 post 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 脚本,因此访问变量 this 并不理想。谁能解释为什么我在 Safari 中丢失了这些值?

您确定 $(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) 的属性(如果有),否则查找具有该属性的子项。