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直到第一個列表完成刷新,但無法弄清楚如何做到這一點。
這裏是複製步驟
- http://library.iit.edu/mbad/#textbooks 在文本框中輸入 「胡」。課程目錄propogates。
- 選擇第一個列表項目(HUM102)。
- 請注意,您的鼠標現在懸停在兩個按鈕之一上:「按教授」或「電子項目」。如果你正在通過手機測試,那麼其中一個按鈕事件也會觸發。
有人能幫我弄清楚我做錯了什麼嗎?
長週末之後解決並找到e.stopPropagation()對象。 – camcclure