jQuery 移动 : Tap event on listview item also fires hidden object event

标签 jquery events listview mobile hidden

我在动态生成的 ListView 上遇到点击事件的问题。当我选择列表中的第一项时,操作将被触发,其中一个是取消隐藏附近的对象。问题是,未隐藏对象的点击事件也会在此时触发。我在编程方面没有广泛的背景,但我在软件测试方面有丰富的背景,因此您可以期待彻底的复制步骤。 :)

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

//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 事件附加到同一函数来解决此问题,但以下行不起作用:

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

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

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

以下是复制步骤

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

有人可以帮我找出我做错了什么吗?

最佳答案

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

关于jQuery 移动 : Tap event on listview item also fires hidden object event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6563281/

相关文章:

jquery - 分配一个 :hover to dynamically loaded content with JQuery

javascript - 如何在js中使用条件连接消息或仅在一个警报框中构造消息

javascript - .replaceWith() 只工作一次

post - 将 bootstrap-datepicker 与 HTMX 结合使用

android - 在一个ListView中点击一个TextView打开另一个布局页面

jquery - 如何使用 jQuery 获取选择选项的标签?

c++ - 滚动时的滚动条事件?

c# - 等待事件引发线程取消

android - 从第二个 Activity 返回后更新第一个 Activity 中的 ListView

java - Android:ListView 行中的计时器?