更改复选框切换功能,从单击到触摸开始

时间:2017-06-25 17:46:38

标签: cordova checkbox touchstart

我正在开发一个cordova应用程序。由于click事件有300ms的延迟,我不想使用它。如何更改<input type='checkbox'>元素收听的事件,以便将其从click复选标记到例如touchstartdisabled

我最接近的是制作复选框$(':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不会触发。

4 个答案:

答案 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);
  }
}