【问题标题】:Can someone tell me what's wrong with my jQuery live method?有人能告诉我我的 jQuery live 方法有什么问题吗?
【发布时间】:2009-12-30 07:23:39
【问题描述】:

我创建了这个简单的时间选择器应用程序,但由于某种原因,这段代码无法正常工作。我让它工作了(也许这是我的想象)。

我有 4 个单选按钮。每个按钮都附加了一个单击事件(使用 jquery 的 live 方法),我显示了一个 DIV 并隐藏了其他 DIV。我还(我以为我是)将插件的方法添加到新显示的 DIV。

看看下面的链接,你就会明白我的意思。第一个 DIV 有效,但随后的 DIV 无效。我错过了什么?

谢谢!

http://jsbin.com/ebige3

【问题讨论】:

  • 请将您的代码添加到帖子中,以便我们检查。
  • Live 方法正在发挥作用,它确实隐藏和显示 div,使用 firebug 查看 html,它会突出显示源代码中的更改。
  • @Nathan:代码在消息中的链接中

标签: jquery live livequery


【解决方案1】:

您的代码存在很多问题。一方面,有几个文本框的 id 为 starttimeendtime,而一个 id 在文档中应该只出现一次。

导致您的问题的原因是,在单击 any 单选按钮时,timepicker 将为匹配 $("#starttime, #endtime") 选择器的 所有 元素初始化。这意味着第一个div(可见)可以正常工作,并且选择字段的位置很好,但是对于随后的div,它的定位是在它们关联的 div 是隐藏,因此无法计算它们的位置。

我会考虑更改代码,以便您的div 的 id 名为“recur1”、“recur2”等,而不是“每日”和“每周”,并且还给他们所有人上课, “复发”。然后,您将能够删除所有 if 语句,然后执行以下操作:

$('.recur').hide();
$('#recur'+recurType).show();

它还可以让你这样做,这将解决你的问题:

$('#recur'+recurType).find("#starttime, #endtime").timePicker({ ... });

【讨论】:

  • 谢谢大卫。我试试看。
  • 正如我所说,您还想创建 starttimeendtime classes,而不是 ids。完成后,只需将最后一个选择器编辑为 $('#recur'+recurType).find('.starttime, .endtime')
  • @大卫:是的!效果非常好!也将我的代码缩小了很多。先生,您应该得到不止一个复选标记。感谢您帮助我了解如何成为更高效的编码人员。
猜你喜欢
  • 2023-01-14
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多