동적으로 생성 된 목록보기에서 tap 이벤트에 문제가 있습니다. 목록에서 첫 번째 항목을 선택하면 작업이 실행되고 그 중 하나는 근처에있는 개체를 숨김 해제하는 것입니다. 문제는 숨겨진 개체의 탭 이벤트가 그 시점에 또한 발생한다는 것입니다. 프로그래밍에 대한 광범위한 배경 지식은 없지만 소프트웨어 테스팅에서는 철저한 복제 단계를 기대할 수 있습니다. :)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');
});
동일한 기능으로 태폴드 이벤트를 연결하여이 문제를 해결할 수 있다고 생각했지만 다음 줄은 작동하지 않습니다.
$('#showItems').delegate('li', 'tap taphold', function() {
동일한 코드를 태폴에 대한 새 이벤트 트리거로 복사 할 때만 작동합니다.
어떻게 든 $ ('. filterBtn'). bind를 비활성화 할 수 있기를 원합니다. 첫 번째 목록이 새로 고침을 마칠 때까지 바인딩 할 수 있지만 그 방법을 알아낼 수는 없습니다. 여기
는 복제가- http://library.iit.edu/mbad/#textbooks 이 텍스트 상자에 "후"를 입력 단계입니다. 코스리스트가 propogates.
- 첫 번째 목록 항목 (HUM102)을 선택하십시오.
- 마우스가 "Prof"또는 "E-items"버튼 중 하나를 가리키고 있습니다. 휴대 전화에서이를 테스트 중이라면 버튼 이벤트 중 하나가 실행됩니다.
누군가 내가 잘못하고있는 것을 알아낼 수 있습니까?
긴 주말 후에 e.stopPropagation() 객체를 찾아 냈습니다. – camcclure