Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.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 尝试从目标事件获取数据时IE8出现问题_Javascript_Jquery_Internet Explorer 8_Jquery Events_Html5 Data - Fatal编程技术网

Javascript 尝试从目标事件获取数据时IE8出现问题

Javascript 尝试从目标事件获取数据时IE8出现问题,javascript,jquery,internet-explorer-8,jquery-events,html5-data,Javascript,Jquery,Internet Explorer 8,Jquery Events,Html5 Data,我有这样的代码 // Get some data var id = event.target.id; var flag_status = event.target.dataset.change; var winner_id = event.target.dataset.winner; var item_id = event.target.dataset.item; 像Firefox和Chrome这样的“普通”浏览器获得的值没有问题,一切都很好;然而,IE8没有发生任何事情,因此我假设它无法获取

我有这样的代码

// Get some data
var id = event.target.id;
var flag_status = event.target.dataset.change;
var winner_id = event.target.dataset.winner;
var item_id = event.target.dataset.item;
Firefox
Chrome
这样的“普通”浏览器获得的值没有问题,一切都很好;然而,IE8没有发生任何事情,因此我假设它无法获取数据

事件
参数通过以下代码传递给此函数:

$('.shipping_status').click(function(event) {

    event.preventDefault();

    // Update Shipping Status
    updateShippingStatus(event);

});
…然后依次在单击其中一个示例元素时获取:

<a title="Item Being Processed" class="shipping_status processing" data-item="102383" data-winner="172" data-change="0" id="processing_102383" href="#"></a>                            
<a title="Item Posted" class="shipping_status posted active" data-item="102383" data-winner="172" data-change="1" id="posted_102383" href="#"></a>
<a title="Problem With Item" class="shipping_status problem" data-item="102383" data-winner="172" data-change="3" id="problem_102383" href="#"></a>
<a title="Item Delayed" class="shipping_status delayed last" data-item="102383" data-winner="172" data-change="2" id="delayed_102383" href="#"></a>

有没有一种方法可以让它与IE8一起工作。。。此外,我没有
IE9+
可供测试-有人知道它是否在>IE8中工作吗


我还用
jQuery
标记了它,如果有其他方法可以用jQuery获取数据,它也可以与IE8一起使用。

看起来IE刚刚开始支持IE11中的
dataset
属性:

尝试只使用
getAttribute()

如果您使用的是jQuery,则可以使用
data()
方法简化此过程:

var $target = $(event.target);
var flag_status = $target.data('change');
var winner_id = $target.data('winner');
var item_id = $target.data('item');
var $target = $(event.target);
var flag_status = $target.attr('data-change');
var winner_id = $target.attr('data-winner');
var item_id = $target.attr('data-item');
仅当HTML元素上的属性不会更改时才使用
data()
。发件人:

数据属性在第一次创建数据属性时被拉入 已访问,然后不再访问或更改(所有数据值 然后存储在jQuery中)

如果需要重新读取更改的HTML属性,只需使用
attr()
方法:

var $target = $(event.target);
var flag_status = $target.data('change');
var winner_id = $target.data('winner');
var item_id = $target.data('item');
var $target = $(event.target);
var flag_status = $target.attr('data-change');
var winner_id = $target.attr('data-winner');
var item_id = $target.attr('data-item');

看起来IE刚刚开始支持IE11中的
dataset
属性:

尝试只使用
getAttribute()

如果您使用的是jQuery,则可以使用
data()
方法简化此过程:

var $target = $(event.target);
var flag_status = $target.data('change');
var winner_id = $target.data('winner');
var item_id = $target.data('item');
var $target = $(event.target);
var flag_status = $target.attr('data-change');
var winner_id = $target.attr('data-winner');
var item_id = $target.attr('data-item');
仅当HTML元素上的属性不会更改时才使用
data()
。发件人:

数据属性在第一次创建数据属性时被拉入 已访问,然后不再访问或更改(所有数据值 然后存储在jQuery中)

如果需要重新读取更改的HTML属性,只需使用
attr()
方法:

var $target = $(event.target);
var flag_status = $target.data('change');
var winner_id = $target.data('winner');
var item_id = $target.data('item');
var $target = $(event.target);
var flag_status = $target.attr('data-change');
var winner_id = $target.attr('data-winner');
var item_id = $target.attr('data-item');

在IE8中不能使用event.preventDefault(),但应该使用event.returnValue


解决方案是:
(event.preventDefault)?event.preventDefault():event.returnValue=false

在IE8中不能使用event.preventDefault(),但应该使用event.returnValue


解决方案是:
(event.preventDefault)?event.preventDefault():event.returnValue=false

使用var item_id=$(此).attr(“数据项”)等。在click事件中使用var item_id=$(此).attr(“数据项”)等。在click事件中,

刚刚尝试了jQuery解决方案,但它仍然有效;如果数据在没有重新加载页面的情况下发生更改,它将无法返回新值-它仍然返回以前的值。jquery
data()
方法不能与HTML属性进行双向绑定。也就是说,我打赌它只是第一次读取属性,不会重新访问DOM。也许只需要使用
attr
方法:
$target.attr('data-change')
。我会更新答案。@SeanAdkinson——正确。
data()
方法将在第一次调用时读取
data-*
属性,但是没有双向绑定,因为
data
方法可以处理更复杂的对象,而不仅仅是原语。谢谢@JeremyJStarcher,我在jquery文档中找到了解释并更新了答案。这对于更复杂的对象来说是有意义的;如果数据在没有重新加载页面的情况下发生更改,它将无法返回新值-它仍然返回以前的值。jquery
data()
方法不能与HTML属性进行双向绑定。也就是说,我打赌它只是第一次读取属性,不会重新访问DOM。也许只需要使用
attr
方法:
$target.attr('data-change')
。我会更新答案。@SeanAdkinson——正确。
data()
方法将在第一次调用时读取
data-*
属性,但是没有双向绑定,因为
data
方法可以处理更复杂的对象,而不仅仅是原语。谢谢@JeremyJStarcher,我在jquery文档中找到了解释并更新了答案。这对于更复杂的对象是有意义的。