显示时的奇怪行为|display:none元素

strange behavior on display|display:none elements

本文关键字:display none 元素 显示      更新时间:2023-09-26

我有一个自定义模态对话框,由一个简单的div和一些css组成。有2个按钮(OK, CANCEL)。CANCEL按钮总是相同的;它通过onclick="$('#div').css('display','none')"隐藏了模态对话(注:这也是模态显示的方式;('display',''))。我根据需要为OK按钮分配不同的操作。这是通过$('#okBTN').attr('onclick','my_function()')

它可以工作,但只有第一次 ©

我第一次打开模态并走过步骤,一切都如预期的那样工作。但是,如果我关闭模态,然后重新打开它,OK按钮上有没有动作。我的意思是,onclick被分配(正确);它在源代码中,它将通过.attr('onclick')正确地发出警报,但是单击按钮什么也不做。我有它的设置,当模态弹出时,onclick每次分配;但它几乎就像有一个影子副本或一些东西卡在内存或DOM中。虽然,我没有看到任何奇怪的Firebug....

我试过克隆按钮,重新分配它,然后replaceWith 'ing。我也试过remove,并重新添加它…

什么线索吗?

朋友,我不想这么说,但是你没有充分利用jQuery的优势。

  • 为什么通过CSS设置显示?只需使用。hide() .show()或。toggle()。
  • 为什么要通过javascript设置onclick属性?这根本说不通。使用$ (elem) .click (my_function);

第二项可能会解决你的问题,但我会做一些认真的重新评估。

祝你好运!

使用bind或事件名称绑定:

$('#okBTN').click(my_function)

我会尝试使用.css('display','block')而不是.css('display',''),因为分配一个空白的display值似乎不像一个好主意(它可能工作,但只是为了安全)。

您是否尝试设置元素的.bind()功能?

$('#okBTN').bind('click', my_function);