我有一个动态创建元素并将click事件附加到这个新元素的函数。
在我的应用程序的当前状态中,此函数被调用5次:对于4个第一个创建的元素,一切正常,但第五个没有附加事件!
我坚持认为:我不仅仅说点击不起作用:在控制台中使用$._data(myElemn,'events')
,我为4个工作元素返回Object { click=[1]}
,但&# 34;未定义"为了最后一个。
这是代码。 但我不认为问题出在哪里:因为它适用于其他元素,似乎差异应该来自第5元素的特定背景。 所以我的问题是:我们可以想象哪些特定条件可能导致并且事件不被附加(显然,没有任何错误消息)。
var createDDT= function(element) { /*
---------
Creates a drop-down toggle button embedded into element.
*/
$(element).css({position:'relative'}) // (relative: since DDT pos is absolute)
.append(
$('<span \/>').addClass(DDT)
.css({display:'none',})
.append($('<span \/>'))
// when click, toggle submenu:
.click(function(event) {
// hide or show current %Submenu:
var submenu=$(event.target).closest('li').find(jqSUBMENU);
submenu.toggleClass(OPEN);
// hide any other %Open %Submenu:
$(jqOPEN).not(submenu).removeClass(OPEN);
setTimeout(liveWidthDisplay,_params.cssTimeout); // adjust LWD's position
return false; // avoid following link, if embedded in <a>
})
);
}
提前感谢任何评论。
[编辑]正如我之前所说,问题可能在函数之外。为了强调它,在我的应用程序中,我尝试用以下代码替换代码:
var createDDT= function(element) { /*
---------
Creates a drop-down toggle button embedded into element.
*/
$(element).css({position:'relative'}) // (relative: since DDT pos is absolute)
.append(
$('<span \/>').addClass(DDT)
.css({display:'none',})
.append($('<span \/>'))
// when click, toggle submenu:
.click(function(event) {
alert(event.target.id);
})
);
}
然后结果不变:&#34; $ ._ data(myElem,&#39; events&#39;)&#34;返回&#34;未完成&#34;。
不幸的是,我无法在jsFiddle中实际添加有意义的上下文,因为它是一个巨大的应用程序。