显示奇怪的行为| display:none elements

时间:2011-04-08 19:30:48

标签: javascript jquery

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

它有效,但只是第一次©

我第一次打开模态并完成步骤时,一切都按预期工作。但是,如果我关闭模态,然后重新打开它,则“确定”按钮会对其执行操作。我的意思是,onclick被分配(正确);它位于源代码中,它将通过.attr('onclick')正确提醒,但单击该按钮不会执行任何操作。我设置了当弹出模态时,每次都会分配onclick;但它几乎就像有一个影子副本或某些东西卡在内存或DOM中。虽然,我在Firebug中看不出任何奇怪的东西......

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

任何线索?

3 个答案:

答案 0 :(得分:2)

讨厌说我的朋友,但你没有利用jQuery的好处。

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

第二个子弹可能会解决您的问题,但我会做一些严肃的重新评估。

祝你好运!

答案 1 :(得分:0)

使用bind或事件名称绑定器:

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

答案 2 :(得分:0)

我尝试使用.css('display','block')代替.css('display',''),因为分配空白display值似乎不是一个好主意(它可能有用,但只是为了安全)

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

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