【问题标题】:jquery ui datepicker doesn't work after body replacement更换身体后jquery ui datepicker不起作用
【发布时间】:2012-10-08 08:54:00
【问题描述】:

​我正在开发一个通过 ajax 更新页面内容的项目。整个身体都被替换了。

现在我想要(或必须)使用 jquery 日期选择器。它一直有效,直到页面内容更新。我可以在 dom 中看到,datepicker 使用了一个附加的 div,该 div 被我的正文更新删除了。所以更新后日期选择器不再工作。我认为该插件尝试使用已删除的日历 div,更新后不再可用。

这是我的例子:

$(document).ready(function() {
    $('body').html('<input type="text" />');
    $('input').datepicker();
    $('body').html('<input type="text" />');
    $('input').datepicker();
});​

jsfiddle:http://jsfiddle.net/ZUwu9/

有什么想法可以在更换页面正文后让日期选择器恢复工作?

【问题讨论】:

  • 有什么理由更换整个“身体”?为什么不把你的内容放在一个 div 中
  • 我在搜索越来越多之后找到了解决方案......更新正文后,需要像这样附加日期选择器 div:$('body').append($.datepicker.dpDiv) ;在这里找到它:bugs.jqueryui.com/ticket/5679
  • 我认为我的解决方案更简单。添加一个新的 div 应该会破坏任何东西。请看我的回答
  • 解决方案是在主体更换后应用 datepicker 之前简单设置:$.datepicker.initialized = false;

标签: javascript jquery jquery-ui datepicker


【解决方案1】:

如果您将内容放在div 中,而不是body,它将起作用

http://jsfiddle.net/ZUwu9/1/

所以只需在 body 中放置一个 div,然后将所有操作应用到这个 dev

【讨论】:

  • 我知道。但我们正在使用具有这种行为的框架。我无法改变这一点。但我在这里找到了解决方案:bugs.jqueryui.com/ticket/5679
  • 好的,但我认为一个好的框架应该让您选择在 ajax 调用完成时要替换哪个 html 元素。无论如何,你已经解决了。 :)
  • 它不是一个好的框架,我没有选择它 :-) 但感谢您的努力
【解决方案2】:

将其附加到委托的事件处理程序。

$('body').on('focus', 'input', function(){
   $(this).datepicker();
});

【讨论】:

  • @Sure612 你链接我的那个例子正如预期的那样工作。我不知道你为什么不给我投票。
  • 我不能投反对票。我没有足够的声誉。也许它可以按(您的)预期工作,但它不能解决问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-03
  • 2013-10-30
  • 2017-09-17
  • 2017-02-12
  • 2014-02-02
相关资源
最近更新 更多