gpt4 book ai didi

javascript - 如何在这里正确使用 .each ?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:37:22 24 4
gpt4 key购买 nike

这基本上适用于我正在构建的库。在本模块中,我将尝试构建调试帮助程序库以在调试过程中为我提供帮助。

我的问题是当 FDL.D.ListEvents() 被调用时会发生一些尴尬的事情:

1) If I include enough _logEvent() calls, the last few stop closing their groups at the console, which makes it completely unreadable.

2) It "decides" that it listed less events than it actually did.

例如,当我在鼠标事件上使用 _logEvent() 时,它会“正确”地列出它们,或者至少以我期望函数工作的方式列出它们,揭示并计算 DOM 上的大约 20 个事件(尽管时间跨度被确定为零,这有点奇怪)。

Apparently I'm too dangerous to post images :( Edit: ! Now I can!

输出图像:


Working ListEvents()



当我用完整的事件列表调用函数时,我得到的是这种奇怪的输出格式:


Broken listing



以下将是 lib 的独立部分(您可以运行它),它应该具有神奇的作用

var FDL = FDL || {};

// FIREBUG DEBUG LIBRARY

FDL.D = (function()
{
function _logEvents(eventName)
{
var _arr = $(":visible");
var _count = 0;

console.groupCollapsed(eventName);

_arr.each(function(idx)
{
var _el = this;
var _id = _el.id;

if(!_id){
_id = _el.tagName;
}

var _ev = eval("_el." + eventName);

if(_ev){
console.log("%o\n" + _ev + "\n\n",$(this));
_count++;
}
});

console.log(_count + " " + eventName + " events");
console.groupEnd();

return _count;
}

return {
ListEvents : function ()
{
var _start = new Date().getTime();
var _count = 0;

console.group("Events");

_count += _logEvents("onblur");
_count += _logEvents("onchange");

_count += _logEvents("onclick");
_count += _logEvents("ondblclick");

_count += _logEvents("onerror");
_count += _logEvents("onfocus");

_count += _logEvents("onkeydown");
_count += _logEvents("onkeypress");
_count += _logEvents("onkeyup");

_count += _logEvents("onmousedown");
_count += _logEvents("onmousemove");
_count += _logEvents("onmouseout");
_count += _logEvents("onmouseover");
_count += _logEvents("onmouseup");

_count += _logEvents("onresize");
_count += _logEvents("onselect");
_count += _logEvents("onunload");

var _diff = new Date(new Date().getTime() - _start).getSeconds();

console.groupCollapsed("details");
console.log(_count + " events bound");
console.log(_diff + "s runtime");
console.groupEnd();

console.groupEnd();
}
};
})();


我尝试了一些想法,但我无法想出正确的解决方案来使这些 _logEvent() 调用链按预期顺序排列。问题基本上是 .each() 被称为异步,我想这就是破坏我代码执行顺序的原因。



感谢您的意见! <3 计算器

编辑: 我用 group() 调用更改了 groupCollapsed() 调用,它确实有效。现在我面临一个不同的问题,我应该如何做到这一点,只要绑定(bind)的函数相同,绑定(bind)的每个事件名称只显示一次?

例如,如果某处我们有 $(":input").click(function(){alert("Clicked!");});

我希望 _logEvents("onclick") 只显示函数和选择器一次,但显示它被绑定(bind)了多少次。例如,如果我们有 4 个输入,输出将是:

jQuery(:input) Len:1 function () {alert("Clicked!");}

最佳答案

问题不在您的代码中,而在 groupCollapsed 例程中。现在使用旧的“组”例程,你会没事的。这bugreport看起来很像你的问题。

关于javascript - 如何在这里正确使用 .each ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3597292/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com