这是我的代码的一部分:
$('.toggle_box').each(function (){
var timeout, longtouch;
$(this).bind('mousedown', function() {
timeout = setTimeout(function() {
longtouch = true;
}, 1000);
$(this).bind('mouseup', function(){
if (!longtouch) {
clearTimeout(timeout)
var state = $(this).find('.switch').attr('data-state');
if(state == "off"){
$(this).find('.switch').attr('data-state','on');
}
else{
$(this).find('.switch').attr('data-state','off');
}
var choice = $(this).parent();
ckbmovestate(choice)
}
else{
alert("3")
};
});
})
});
当我点击一个元素(mousedown和up)时,它工作正常,但是我需要双击该元素才能触发它。看起来第二次单击会重置绑定,以便3e可以再次使用它。只是很奇怪。
这是一个演示:不再有效...... 它是橙色复选框:)(请检查safari / chrome)
谢谢你的帮助:)
答案 0 :(得分:1)
查看此处发布的代码... http://jsfiddle.net/qv4Ve/2/
您在mousedown事件处理程序中绑定了mouseup事件。你应该必须彼此独立地绑定它们。
$(this).bind('mousedown', function() {
timeout = setTimeout(function() {longtouch = true;}, 1000);
console.log("inside mouse down");
});
$(this).bind('mouseup', function(){
console.log("inside mouse up");
if (longtouch === false) {
clearTimeout(timeout)
var state = $(this).find('.switch').attr('data-state');
if(state == "off"){
$(this).find('.switch').attr('data-state','on');
}
else {
$(this).find('.switch').attr('data-state','off')
;}
var choice = $(this).parent();
ckbmovestate(choice)
}
else {
alert("is a long touch")
};
});
上面发布的小提琴中的代码按照你想要的方式工作......