我在单击fullCalendar中的事件时尝试执行一个操作,并在双击同一事件时执行另一个操作,并且遇到在dblClick上触发单击事件的问题。
我想在一次点击中更改一系列事件的边框颜色,并在双击时打开编辑对话框。
我在eventRender函数中尝试过这样但是它没有用。此外,将click事件从eventRender中删除并使用eventClick函数进行单击,其行为方式相同。
element.bind('dblclick', function(ev) {
editEvent(event,element,view);
alert('double click!');
});
element.bind('click', function(ev) {
var eventSeries=$('#calendar').fullCalendar('clientEvents', event.id);
$(eventSeries).each(function(){this.borderColor='red'});
$('#calendar').fullCalendar('updateEvent', eventSeries);
alert('single click!');
});
当eventClick或click绑定中没有任何内容时,dbclick会正常触发,但只要我在click binding或eventClick中有代码,dblclick就永远不会被触发。有谁知道我如何处理这两类事件?
答案 0 :(得分:3)
你可以滚动你自己的单击/双击事件,基本上,使用setTimeout触发单击事件后,如果他们试图双击,则给用户足够的时间完成第二次点击。
这是小提琴:http://jsfiddle.net/wfG6k/
$button.bind( 'click', function( event ) {
var doubleClickOpportunity = 200, // Adjust this to whatever feels right
$elem = $( event.target ),
clicker = $elem.data( 'clicker' ); // Holder for the doubleclick setTimeout
if ( clicker ) {
// If there's a setTimeout stored in clicker, then this is a double click
clearTimeout( clicker );
$elem.data( 'clicker', '' );
$elem.trigger( 'doubleclick' );
} else {
// Otherwise, it's either a single click or the beginning of a double click
// So set a timer to decide which it is - if the timer runs out,
// it's just a single click.
$elem.data( 'clicker', setTimeout(function() {
$elem.data( 'clicker', '' );
$elem.trigger( 'singleclick' );
}, doubleClickOpportunity ));
}
});
$button.bind( 'singleclick', function() {
// I'm a single click!
});
$button.bind( 'doubleclick', function() {
// I'm a double click!
});