我在http://dev.jtsage.com/jQM-DateBox2/demos/fullopt.html使用jquery移动日期框 特别是我在http://dev.jtsage.com/cdn/datebox/1.1.0/jqm-datebox-1.1.0.mode.calbox.js
使用了calbox选项我需要拦截点击一天后触发的点击事件,然后执行自定义操作(例如,更改该日期的背景颜色)。这样做的最佳方式是什么?我试图为元素$('div.ui-datebox-griddate.ui-corner-all.ui-btn-up-d')注册一个click事件,但这似乎没有用。
我正在使用backbonejs,coffeescript中类的相关部分看起来像(SimpleView扩展Backbone.View):
class A extend SimpleView
....
events: {
'click div.ui-datebox-griddate.ui-corner-all.ui-btn-up-d': "clicked"
}
clicked: (event) ->
console.log 'clicked'
上述方法不起作用,而且这可能不是我想要的最佳方式,因为它依赖于内部类名来创建click事件。
提前致谢!
答案 0 :(得分:2)
Datebox会触发一个名为“datebox”的自定义事件(足够创造性)。单击一天时,事件将被触发三次,但更重要的是,它会向事件传递第二个参数,该事件包含有关被点击日期的详细信息。
试一试:
....
events: {
'datebox' : 'clicked'
},
clicked: function(e, eventDetail) {
// Of the three event triggers, "method" varies, so I checked for "set"
if (eventDetail.method == "set") {
var jsDateObj = eventDetail.date;
console.log(jsDateObj);
}
}
....
答案 1 :(得分:0)
我想我找到了一种方法。而不是在"日" element - 在日历附加的输入日期字段上创建一个。从那里,您可以获取内容并将其用作过滤器以获取正确的日历日元素,此时您可以使用css样式执行任何操作。相关的代码片段如下......
class A extend SimpleView
....
events: {
'change #mydate': "clicked"
}
clicked: (event) ->
t = $(event.target)
day = t.data('datebox').theDate.getDate()
dayFilter= "div.ui-datebox-griddate.ui-corner-all:contains('#{day}')"
$(dayFilter).filter( ->
thisDay = parseInt($(@).text())
if thisDay == day
# do your css magic here
)