我有一个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中丢失这些值吗?
答案 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)
的属性,否则会查找具有该属性的子项。