繁体   English   中英

JQuery 移动设备:列表视图项目上的点击事件也会触发隐藏的 object 事件

[英]JQuery mobile: Tap event on listview item also fires hidden object event

我在动态生成的列表视图上的点击事件有问题。 当我 select 列表中的第一项时,动作是火灾,其中一个是取消隐藏附近的 object。 问题是未隐藏对象的点击事件也在那个时候触发。 我没有广泛的编程背景,但我从事软件测试,因此您可以期待彻底的复制步骤。 :)

这是选择任何列表项时触发的事件:

//When a list item is selected
    $('#showItems').delegate('li', 'tap', function () {
        if ($('#showItems').hasClass("courses")){
            courseNum = $(this).find('.course').text();
            var profArr=new Array();
            profArr[0]="";
            profArr[1]="";
            ajax_get_textbooks(courseNum, profArr[1], profArr[0]);
            $('#showItems').removeClass('profs courses booksProf eitems').addClass('books');
        }
        else if ($('#showItems').hasClass("profs")){
            prof = $(this).text();
            profArr = prof.split(", ");
            ajax_get_textbooks(courseNum, profArr[1], profArr[0]);
            $('#showItems').removeClass('profs courses books eitems').addClass('booksProf');
        }
        $('#filters').removeClass('hidden'); // this is the object that gets acted upon incorrectly
    });

这是在选择第一个列表元素时也会触发的事件:

//When filter by professor/e-resources is selected
 $('.filterBtn').bind('tap',function(event){
    var filter = $(this).text();
    filter = filter.toLowerCase();
    if (filter.indexOf("prof") !== -1 ) {
        ajax_filter_professor(courseNum);
        $('#showItems').removeClass('books courses booksProf eitems').addClass('profs');
    }
    else {
        ajax_filter_eresources(courseNum);  
        $('#showItems').removeClass('books profs booksProf courses').addClass('eitems');
    }
    $('#showItems').listview('refresh');
});

我想我可以通过将 taphold 事件附加到同一个 function 来解决这个问题,但是以下行不起作用:

$('#showItems').delegate('li', 'tap taphold', function () {

仅当我将相同的代码复制到新的事件触发器中以进行点击时,它才有效。

我希望能够以某种方式禁用 $('.filterBtn').bind 直到第一个列表完成刷新,但无法弄清楚如何做到这一点。

以下是复制步骤

  1. http://library.iit.edu/mbad/#textbooks在文本框中输入“hu”。 课程列表传播。
  2. 选择第一个列表项 (HUM102)。
  3. 请注意,您的鼠标现在悬停在两个按钮之一上:“by Prof”或“E-items”。 如果您在手机上对此进行测试,其中一个按钮事件也会触发。

有人可以帮我弄清楚我做错了什么吗?

也许您可以尝试使用 JQM 的 vclick 事件。 请参阅http://jquerymobile.com/test/docs/api/events.html上的 JQM 中支持的事件列表 如果不是 Vclick,其他可能适合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM