javascript - 页面加载后动态添加 jquery datepicker

标签 javascript jquery coffeescript datepicker jquery-ui-datepicker

单击按钮后,我有一些 jquery 会向“body”元素添加一些 html。在那个 html 中,我有一个日期选择器输入字段,它拒绝在应该出现的时候出现。

我在我的应用程序的其他几个地方使用了 ui-datepicker,它工作得很好。

我试过在文档加载时调用日期选择器:

jQuery ->
  $('.my-datepicker-class').each ->
    input = $(this)
    input.datepicker()

在将新的 html 添加到页面的点击事件之后:

$('.my-button').click ->
  $('body').ipadoverlay
    titleStyle: false
    contentWidth: 500
    topSpc: true
    content: $('#popup-for-' + thing_id).html()
  $('.my-datepicker-class').each ->
    input = $(this)
    input.datepicker()

但是采摘者拒绝出现。我的猜测是它与 jquery 何时构建和放置日期选择器有关,但我真的不知道。

如果您有任何想法或可以使用更多信息,请告诉我。

更新 我更改了调用 datepicker() 的方式,以便它仅适用于我希望附加日期选择器的元素。

$('.ipadoverlay .date-picker').datepicker()

这消除了 .each => 的第一个问题。
现在它默默地失败了。没有错误或警告。日期选择器根本不显示。

我将开始深入研究 jquery.ui.datepicker.js 看看我是否能弄清楚发生了什么,但如果您对日期选择器无法响应的原因有任何想法,请告诉我。

更新 2 好的,我更进一步了。 “hasDatepicker”类已经附加到我想要添加日期选择器的元素(这意味着 $('.date-picker').datepicker() 在其他地方被调用,而元素被隐藏和未使用),但是日期选择器不起作用。我通过从元素中删除类并再次调用 .datepicker() 来修复此问题

$('.ipadoverlay .date-picker').removeClass('hasDatepicker')
$('.ipadoverlay .date-picker').datepicker()

现在日期选择器会在点击时显示,但选择日期不会做任何事情......非常感谢帮助

最佳答案

你需要使用粗箭头。您对“this”的使用失去了上下文。

jQuery ->
  $('.my-datepicker-class').each => # <-- Fat arrow
    input = $(this)
    input.datepicker()

我会解释,但是 coffeescript.org比以往任何时候都做得更好。

关于javascript - 页面加载后动态添加 jquery datepicker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19868100/

相关文章:

javascript - HTML5 视频元素无法播放没有音频编解码器的 .mp4

javascript - JW Player 停止播放多个视频

jquery - onClick 循环遍历具有相同类的 DIV

javascript - 将此 JavaScript 代码转换为 jQuery

javascript - 如何将此语法转换为 CoffeeScript(js2coffee 不起作用)?

javascript - 如何向 Javascript tabify 链接添加额外的超链接?

javascript - 选项卡中的嵌套选项卡( Bootstrap )

jquery - 在jquery中查找具有某个属性值的所有元素

javascript - 第 6 行中未关闭的 INDENT (CoffeeScript) 编译器错误

coffeescript - 创建用于在目录和子目录中递归编译 CoffeeScript 文件的 grunt 任务