1

我有这样的代码..

// 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如果有其他方法可以使用 jQuery 获取这些数据,我也标记了这个,它也可以与 IE8 一起使用。

4

3 回答 3

4

看起来 IE 刚刚开始支持datasetIE11 中的属性: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');

data()在 HTML 元素上的属性不会更改时使用。来自jquery 文档

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');
于 2014-04-12T18:35:52.363 回答
1

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

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

于 2014-04-12T18:36:18.160 回答
0

在点击事件中使用 var item_id = $(this).attr("data-item") 等

于 2014-04-12T18:37:25.063 回答