2011-07-03 31 views
3

我在動態生成列表視圖上遇到了點擊事件問題。當我選擇列表中的第一個項目時,這些操作是觸發的,其中一個是取消隱藏附近的對象。問題在於那個未隱藏對象的點擊事件也會在那時觸發。我沒有廣泛的編程背景,但我在做軟件測試,因此您可以期待徹底的複製步驟。 :)JQuery手機:在列表視圖項目上點擊事件也會觸發隱藏對象事件

這是火災時,被選擇的列表項的事件:

//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 在文本框中輸入 「胡」。課程目錄propogates。
  2. 選擇第一個列表項目(HUM102)。
  3. 請注意,您的鼠標現在懸停在兩個按鈕之一上:「按教授」或「電子項目」。如果你正在通過手機測試,那麼其中一個按鈕事件也會觸發。

有人能幫我弄清楚我做錯了什麼嗎?

+0

長週末之後解決並找到e.stopPropagation()對象。 – camcclure

回答