Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript HTML5数据属性在Safari中丢失_Javascript_Jquery_Html_Safari - Fatal编程技术网

Javascript HTML5数据属性在Safari中丢失

Javascript HTML5数据属性在Safari中丢失,javascript,jquery,html,safari,Javascript,Jquery,Html,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> 但是,如果我通过以下方式访问Saf

我有一个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>
但是,如果我通过以下方式访问Safari中的属性,我可以获得值:

console.log( document.getElementById('add-dates-button').getAttribute( 'data-table' ) );
我在很多地方使用对话框ajax表单脚本,因此专门访问变量并不理想。有人能解释为什么我在Safari中丢失了这些值吗?

您确定Safari中的按钮是
$(e.target)
元素吗?您的选择器
.dialog ajax表单
不是特定于
元素的,但我假设它包含在表单中

您需要获取并找到具有该属性的元素,可能需要使用:

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

这将使用
$(e.target)
的属性,如果有,则使用该属性查找具有该属性的子级。

@dandavis有HTML5
数据-*
支持@DaveAnderson:我说的是“设置数据属性”,我支持它。。。也就是说,我看错了,他没有设置…@dandavis,按钮本身的属性不是已经设置好了吗?我对.data()的理解是,我可以访问数据属性。使用.attr(“数据名”)也有相同的结果。是的,我在第一条(删除的)评论中出错了。仔细看,我看不出问题。也可以将选择器调整为
$(文档)。在('click','#add dates button'
@guest271314上,不确定是否有多个不同形式的按钮具有相同的
数据-*
属性。结果表明,在Safari中,e.target在后续操作中锁定了一个元素,而不是$(e.target),但是,我修改了代码以使用$(this),从而解决了问题
var $target = $(e.target);
var tbl = $target.data('table') || $target.find('[data-table]').data('table');