Chrome 57使.data()功能不佳

Ken*_*all 9 javascript jquery google-chrome

.on("change")当用户在Chrome 57中工作时,此部分活动无法正常运行.这只是Chrome 57问题.

设置中的userId变量if并在到达此代码之前具有值.
但是,条件在应该的时候没有被发现.

但是如果我正在调试并且有一个断点设置我会想到if并且我在断点处停下来并且停留一段时间这是否正常工作.

这并没有影响使用57的每个人.
我只能重新创建这个问题两次,在调试之后,它就消失了.

对于发生了什么以及如何解决它的想法?
我还要注意,我们使用的是非常旧版本的jquery - 1.11.1并且升级并不容易.

var selected = $(this).children("option:selected");
var name = selected.html();
var userId = selected.attr("value");
var personInList;

$("li", "#list1").add("li.person", "#list2").each(function () {
    if ($(this).data("userId") == userId) {
        personInList = $(this);
        return;
    }
});

if (userId && userId!= "default" && !personInList) {
    //some code that gets triggered that shouldn't because this "if" is turning up true
}
Run Code Online (Sandbox Code Playgroud)

Bot*_*tis 1

对我来说,这成功了:

在设置 .data() 的地方,只需将元素或数据结果保存在某处即可。

$('#someElem').data('userId', '1234');
var elemData = $('#someElem').data('userId');

window['someUniqueKey'] = elemData;
//or
console.log(elemData);
Run Code Online (Sandbox Code Playgroud)

然后,调用$('#someElem').data('userId')应该在事件处理程序中返回有效数据。

至于为什么会发生这种情况:我将非常感谢您的回答。我的一位同事建议这可能与新 Chrome 中的垃圾收集有关。但如果是这样,看起来就像是 GC 中的一个错误。