页面加载后动态添加jquery datepicker

时间:2013-11-08 20:38:37

标签: javascript jquery coffeescript datepicker jquery-ui-datepicker

点击一下按钮,我有一些jquery会在'body'元素中添加一些html。在那个html中,我有一个datepicker输入字段,拒绝出现它应该出现。

我在我的应用程序中的其他几个位置使用ui-datepicker,它完美无缺。

我在文档加载时尝试调用datepicker:

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

并在将新html添加到页面的click事件之后:

$('.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有关,但我真的不知道。

如果您有任何想法或可以使用更多信息,请与我们联系。

更新 我更改了我调用datepicker()的方式,以便它只适用于我想要附加datepicker的元素。

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

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

我将开始深入研究jquery.ui.datepicker.js,看看我是否能弄明白最新情况,但如果你有任何想法为什么datepicker无法回应,请告诉我。

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

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

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

1 个答案:

答案 0 :(得分:1)

你需要使用胖箭头。你对'this'的使用会失去其背景。

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

我会解释,但coffeescript.org比我做得更好。