将复选框切换功能从单击更改为触摸启动
Change checkbox toggle function from click to touchstart
我正在开发一个科尔多瓦应用程序。由于点击事件有 300 毫秒的延迟,我不想使用它。如何更改 <input type='checkbox'>
元素侦听的事件以将其复选标记从 click
切换为例如touchstart
?
我最接近的是选中复选框 disabled
并添加此代码:
$(':checkbox').each(function(){
$(this).bind('touchstart', function(){
if(this.checked) {
this.checked = true;
} else {
this.checked = false;
}
})
});
遗憾的是 touchstart 没有触发。
您可以使用此代码
document.querySelector("#idofelement").addEventListener("touchend", function() {
}
使用该代码复选框事件将被调用两次。首先 touchstart 事件将被调用,然后在 300ms 延迟后单击事件将调用真实事件复选框。让我们试试这个代码
$(':checkbox').each(function(){
$(this).bind('touchstart', function(){
if(this.checked) {
this.checked = true;
} else {
this.checked = false;
}
}).bind('click', function(e) {
e.preventDefault();
});
});
首先,我需要在捕获的事件上调用 preventDefault()
。
另一个问题是,checked
不是实际的 jquery 属性 复选框,我需要使用 prop()
所以最终起作用的是:
$('.divClassContainingCheckbox').each(function(){
$(this).bind('touchstart', function(e){
e.preventDefault(); // prevents click from triggering check
checkbox = $(this).find(':checkbox');
if(checkbox.is(":checked")) {
checkbox.prop('checked', false);
} else {
checkbox.prop('checked', true);
}
})
});
HTML:
<div class='divClassContainingCheckbox'>
<input type='checkbox' />
</div>
这个函数对我有用,我得到了复选框标签的属性,然后我以编程方式检查了输入类型复选框
function checkedCheckbox() {
var id = $(this).attr('for');
var element = $('#'+id);
var isChecked = element.prop("checked");
if(isChecked) {
$(element).attr("checked", false);
} else {
$(element).prop('checked', true);
}
}
我正在开发一个科尔多瓦应用程序。由于点击事件有 300 毫秒的延迟,我不想使用它。如何更改 <input type='checkbox'>
元素侦听的事件以将其复选标记从 click
切换为例如touchstart
?
我最接近的是选中复选框 disabled
并添加此代码:
$(':checkbox').each(function(){
$(this).bind('touchstart', function(){
if(this.checked) {
this.checked = true;
} else {
this.checked = false;
}
})
});
遗憾的是 touchstart 没有触发。
您可以使用此代码
document.querySelector("#idofelement").addEventListener("touchend", function() {
}
使用该代码复选框事件将被调用两次。首先 touchstart 事件将被调用,然后在 300ms 延迟后单击事件将调用真实事件复选框。让我们试试这个代码
$(':checkbox').each(function(){
$(this).bind('touchstart', function(){
if(this.checked) {
this.checked = true;
} else {
this.checked = false;
}
}).bind('click', function(e) {
e.preventDefault();
});
});
首先,我需要在捕获的事件上调用 preventDefault()
。
另一个问题是,checked
不是实际的 jquery 属性 复选框,我需要使用 prop()
所以最终起作用的是:
$('.divClassContainingCheckbox').each(function(){
$(this).bind('touchstart', function(e){
e.preventDefault(); // prevents click from triggering check
checkbox = $(this).find(':checkbox');
if(checkbox.is(":checked")) {
checkbox.prop('checked', false);
} else {
checkbox.prop('checked', true);
}
})
});
HTML:
<div class='divClassContainingCheckbox'>
<input type='checkbox' />
</div>
这个函数对我有用,我得到了复选框标签的属性,然后我以编程方式检查了输入类型复选框
function checkedCheckbox() {
var id = $(this).attr('for');
var element = $('#'+id);
var isChecked = element.prop("checked");
if(isChecked) {
$(element).attr("checked", false);
} else {
$(element).prop('checked', true);
}
}