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

问题描述 投票:1回答:3

我有这样的代码..

// 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;

“普通”浏览器,例如FirefoxChrome,可以毫无问题地获得值,并且一切正常。但是IE8没有任何反应,所以我假设它无法获取数据。

event参数通过以下代码传递给该函数:

$('.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标记了这一点,如果我们还有另一种方法也可以使用IE8的jQuery获取此数据。

javascript jquery internet-explorer-8 jquery-events html5-data
3个回答
4
投票

好像IE刚刚开始支持IE11中的dataset属性:https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset

尝试仅使用getAttribute()

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

如果您使用的是jQuery,则可以使用data()方法轻松实现:

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

如果HTML元素上的属性不变,则仅使用data()。从jquery documentation

data-属性在第一次data属性是访问,然后不再访问或变异(所有数据值然后在内部存储在jQuery中。

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

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

1
投票

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

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


0
投票

在点击事件内使用var item_id = $(this).attr(“ data-item”)等)>

© www.soinside.com 2019 - 2024. All rights reserved.