事件未附加

时间:2014-03-25 00:13:05

标签: javascript jquery javascript-events

我有一个动态创建元素并将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中实际添加有意义的上下文,因为它是一个巨大的应用程序。

0 个答案:

没有答案