2009-12-30 64 views
0

我已经创建了这个简单的时间选择器应用程序,但由于某些原因,这段代码不起作用。我有它的工作(也许这是我的想象力)。有人能告诉我我的jQuery live方法有什么问题吗?

我有4个单选按钮。每个按钮都有一个点击事件(使用jquery的实时方法),我显示一个DIV并隐藏其他DIV。我也(我想我是)添加插件的方法到新显示的DIV。

看看下面的链接,你会明白我的意思。第一个DIV的作品,但后来的没有。我错过了什么?

谢谢!

http://jsbin.com/ebige3

+0

请添加代码到帖子让我们更容易检查。 – 2009-12-30 07:26:24

+0

实时方法正在做它的工作,它确实隐藏并显示div,使用萤火虫查看html,它会突出显示源代码中的更改。 – ryudice 2009-12-30 07:30:28

+0

@Nathan:代码在邮件的链接 – Loony2nz 2009-12-30 16:53:57

回答

1

有一堆与你的代码的问题。首先,有几个文本框的编号为starttimeendtime,而id在文档中只应出现一次。

是什么造成您的问题是,在任何单选按钮的点击,则timepicker将是$("#starttime, #endtime")选择匹配所有元素初始化。这将意味着第一个div(这是可见的),工作正常,并且选定的字段被定位好,但对于后续的div's,它被定位在与它们关联的div被隐藏的时间,并且作为如此,他们的职位无法计算。

我会考虑更改代码,以便您的div的ID被称为“recur1”,“recur2”等,而不是“每日”和“每周”,并且还为他们提供了一个类,“复发”。然后,你就可以删除所有if语句,只是做:

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

它也将让你做到这一点,这将解决您的问题:

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

谢谢大卫。我会试一试。 – Loony2nz 2009-12-30 07:39:57

+0

正如我所说的,你也想让'starttime'和'endtime' * classes *,而不是* id *。一旦你这样做了,只需将最后一个选择器编辑为'$('#recur'+ recurType).find('。starttime,.endtime')' – 2009-12-30 07:43:34

+0

@David:yes!那真的很棒!我的代码也大量缩减。 您应该拥有多个复选标记。感谢您帮助我了解更高效的编码器。 – Loony2nz 2009-12-30 17:51:25

相关问题