附加到Checkbox的Click事件不适用于移动浏览器

时间:2015-03-18 01:03:17

标签: jquery jquery-mobile

我需要你的帮助。我很难得到这个 事件处理程序在移动设备上工作

https://github.com/jquery/jquery-mobile/issues/8017

附加到Checkbox / Radio项目的Click事件在桌面浏览器中工作,但在移动浏览器中不起作用。

我有这段代码可以在浏览器上正常工作,但事件并没有在移动设备上捕获

$(document).on('click', '.ui-checkbox-off', function (event, data) {
alert('ss');
});

$(document).on('click', '.ui-checkbox-on', function (event, data) {
alert('ss');
});

在复选框检查时被调用并取消选中,如此小提琴

所示

http://jsfiddle.net/cod7ceho/34/

但使用移动设备

时未捕获此事件

(我动态生成上面的HTML),我也在使用trigger.create和updatelayout

任何人都可以告诉我他们为什么没有被手机捕获

供您参考我正在创建HTML,如此小提琴

所示

http://jsfiddle.net/cod7ceho/35/

如果有任何问题,请告诉我。

2 个答案:

答案 0 :(得分:0)

尝试使用touchstart事件

$(document).on('touchstart click', '.remove', function (e) {
    $("#addonsWrap").find("label.ui-checkbox-on").trigger('click', [1]);
});


$(document).on('touchstart click', '.ui-checkbox-off', function (event, data) {
    if(data !== undefined) return;

    var cost = $(this).data('cost');
    var totalcost = parseFloat($('.totalcost').text());
    totalcost = totalcost + cost;
    $('.totalcost').text(totalcost)
});


$(document).on('touchstart click', '.ui-checkbox-on', function (event, data) {

    if(data !== undefined) return;
    alert('ss');
    var cost = $(this).data('cost');
    var totalcost = parseFloat($('.totalcost').text());
    totalcost = totalcost - cost;
    $('.totalcost').text(totalcost)
});

jsfiddle http://jsfiddle.net/cod7ceho/41/

答案 1 :(得分:0)

在移动设备上实际上可以正常使用,但它可能与浏览器有关。但是,相当于click的近距离移动设备是touchend那么

$(document).on('click touchend', '.ui-checkbox-off', function (event, data) {
alert('ss');
});

$(document).on('click touchend', '.ui-checkbox-on', function (event, data) {
alert('ss');
});

https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Touch_events