有在IE8尝试当问题得到目标的事件数据(Having problems in IE8 when at

2019-10-19 21:01发布

我有如下代码..

// 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正常工作。

Answer 1:

看起来像IE刚开始支持dataset在IE11属性: 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-用属性在第一次拉动数据属性被访问,然后不再访问或突变的(所有数据值然后被存储在内部的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');


Answer 2:

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

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



Answer 3:

使用VAR ITEM_ID = $(本).attr( “数据项”)等click事件里面



文章来源: Having problems in IE8 when attempting to get data from target event