2

我尝试了很多不同的可能性来实现我认为应该是简单的代码执行。我正在通过.load(). 加载的项目之一是一个带有日期的输入文本框。当我点击输入框时,我想加载 jdpicker(一个插件 datepicker)。由于 and 的行为.live().delegate()即使我分别使用.die()or .undelegate(),我也无法让弹出日期选择器正常运行。它要么弹出,允许我单击窗口中的一个对象,然后立即关闭(我无法在不关闭窗口的情况下浏览数月、数年),或者弹出窗口并且每次后续单击都会重新执行生成多个实例的代码的日期选择器。

我尝试了 , 的不同组合.live().delegate().one()没有运气。我已经在主窗口中测试了日期选择器,并且知道它在那里工作正常。我可以发布代码,但不确定我所做的十种不同尝试中的哪一种是最好的例子。我可以展示我最近的尝试。

有没有人有一个合适的例子?谢谢!


更新

我已将代码编辑为如下所示:

$("#edit-entry").load("/edit/", { id:id }, function(){
                $('.jdpicker').one('click', function(){
                    $(this).jdPicker();
                });
});

这取决于成为完整的答案。日期选择器不再调用多个实例,这很好,但我仍然无法导航它的控件(月、年选择)。如果我点击下个月,它将加载并关闭。下次我点击它时,它会在下个月重新打开。所以,它确实有效,但肯定是不可取的。有什么建议么?

4

1 回答 1

0

你不能用“live”或“delegate”来做到这一点。事实是,您需要在“.load()”成功后显式应用插件初始化。

编辑-您所做的更改可能不会起作用。这是您的英文代码:

“从 URL '/edit/' 获取内容并将其存入 id 为 'edit-entry' 的元素。收到该内容后,将一次性事件处理程序绑定到所有元素的“点击”功能类'jdpicker'。在该事件处理程序中,为元素设置'jdPicker'功能。

相反,您应该做的只是直接调用 jdPicker 设置,而不是设置它,以便用户必须先单击元素。

$("#edit-entry").load("/edit/", { id:id }, function(){
    $('.jdpicker').each(function(){
        $(this).jdPicker();
    });
});
于 2010-08-05T00:59:52.220 回答