我正在开发一个cordova应用程序。由于click事件有300ms的延迟,我不想使用它。如何更改<input type='checkbox'>
元素收听的事件,以便将其从click
复选标记到例如touchstart
。 disabled
?
我最接近的是制作复选框$(':checkbox').each(function(){
$(this).bind('touchstart', function(){
if(this.checked) {
this.checked = true;
} else {
this.checked = false;
}
})
});
并添加此代码:
def tokenize(s):
return tokens_re.findall(s)
def preprocess(s, lowercase=False):
tokens = tokenize(s)
if lowercase:
tokens = [token if emoticon_re.search(token) else token.lower() for token in tokens]
return tokens
with open('twitterdata.json', 'r') as f:
for line in f:
tweet = json.loads(line)
tokens = preprocess(tweet['text'])
不幸的是,touchstart不会触发。
答案 0 :(得分:1)
使用该代码复选框事件将被调用两次。第一个touchstart事件将被调用,然后在300ms延迟后,click事件将被称为真实事件复选框。我们试试这段代码
cur = mydb.cursor()
cur.execute('SELECT * FROM jul')
results = cur.fetchall()
答案 1 :(得分:0)
您可以使用此代码
document.querySelector("#idofelement").addEventListener("touchend", function() {
}
答案 2 :(得分:0)
对于一个,我需要在捕获的事件上调用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>
答案 3 :(得分:0)
此功能对我有用,我获得了复选框标签的attr,然后检查了输入类型checbox programaticaly
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);
}
}