【问题标题】:Button doesn't work when Appending附加时按钮不起作用
【发布时间】:2013-07-29 17:06:17
【问题描述】:

我正在使用 jQuery 创建一个面向窗口的操作系统式应用程序。当单击一个窗口时,它会将自身附加到父元素,从而在视觉上将其置于任何其他窗口的顶部。但是,如果窗口内有一个按钮,它不会让我点击它,直到窗口附加到父元素之后,这意味着我必须再次点击它。有谁知道为什么?

这是我的网站:http://faithserve.com/jOS/v2/

在网站上,点击测试按钮应该是console.log("test")

代码比较复杂,但附加脚本基本是这样的:

$(this.element).on("mousedown",function(e){
  thisWindow.app.menubar.display();
  if (!$(thisWindow.element).is(':last-child')) {
    $("#desktop").append(thisWindow.element);
  }
});

编辑

由于上面指向我网站的链接将来可能会被修复或关闭,这里有一个演示问题的小提琴:http://jsfiddle.net/QhZr6/1/

【问题讨论】:

  • 问题是你显示的代码似乎不是错误在哪里。
  • 什么是.element?
  • 你用的是什么浏览器?正如你提到的,我可以使用 Firefox(最新)点击它
  • 我只是想知道是否有一种解决方法可以使按钮工作,即使 mousedown 事件将其附加到父元素。该按钮确实有效,但仅当您在聚焦它所在的窗口后第二次单击它时。我在 Chrome 中。你是对的,它也适用于我的 Firefox。这只是 Chrome 的东西吗?

标签: javascript jquery css events


【解决方案1】:

您好,这可能不是最优雅的解决方案,但您可以尝试以下方法:

$("button").on("click", function () {
    $("#message").html($("#message").html() + $(this).attr("id"));
});

$(".win").on("mousedown", function () {
    var $this = $(this);
    setTimeout(function () {
        $("#con").append($this);
    }, 100);
});

编辑: 建议您使用.on("click", function() {...} ) 将事件处理程序绑定到对象

更新了 jsFiddler here.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-01
    • 1970-01-01
    相关资源
    最近更新 更多