【发布时间】:2011-10-05 20:23:24
【问题描述】:
我的页面中有 100 个按钮(每个按钮都有 class='btn')。
我还有一个单个 按钮,它准备所有其他 100个按钮。
<input type='button' onclick='bindTheClickevent()' />
按下时, - 他调用 bindTheClickevent () - (将点击事件绑定到所有其他 100 个事件)。
在脚本部分我放了:
function bindTheClickevent ()
{
$(".btn").bind('click',function () {
$(this).css('color','red');
});
}
问题
1) 在内存中,anonymous function中有多少instances是created?
2)在内存中,bindTheClickevent() 函数是否会一直be free (GC)? - 请注意 Bind 是在 inside bindTheClickevent 函数中调用...
3) 何时,最终 - bindTheClickevent 函数 will be free to GC ?
让我们做出改变
function bindTheClickevent ()
{
$(".btn").bind('click',function () {
changeColor($(this));
});
}
function changeColor(obj)
{
$(obj).css('color','red');
}
现在 - 改变之后
1)如果我这样做有什么不同吗?
2) 在内存中,anonymous function中有多少instances是created?
3) bindTheClickevent() 函数是否会 be free (GC) ? - 请注意,Bind 是在 inside bindTheClickevent 函数中调用的...
【问题讨论】:
-
???你在做什么?拥有一个仅绑定 另一个 事件处理程序的 DOM 0 事件处理程序没有多大意义……这只是某种浏览器行为研究主题吗?
-
@Pointy,嗨。我只是给出了一个简单的情况(不是在现实生活中),我想学习这种行为。
-
在您的第二个示例中,您调用
changeColor($(this));,也就是说,您正在传递一个jQuery 对象。在changeColor中,您再次将其包装在一个jQuery 对象中:$(obj)。这是不必要的
标签: javascript jquery javascript-events event-handling