JQuery mobile:在listview项目上点击事件也会触发隐藏对象事件

时间:2011-07-03 13:54:51

标签: jquery events listview mobile hidden

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

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

//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”。课程列表传播。
  2. 选择第一个列表项目(HUM102)。
  3. 请注意,您的鼠标现在悬停在两个按钮之一上:“by Prof”或“E-items”。如果您在手机上进行测试,其中一个按钮事件也会触发。
  4. 有人可以帮我弄清楚我做错了吗?

1 个答案:

答案 0 :(得分:0)

也许您可以尝试使用JQM的vclick事件。 在http://jquerymobile.com/test/docs/api/events.html上查看JQM中支持的事件列表 如果它不是Vclick,那么其他东西可能适合。