2011-07-03 4 views
3

동적으로 생성 된 목록보기에서 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를 비활성화 할 수 있기를 원합니다. 첫 번째 목록이 새로 고침을 마칠 때까지 바인딩 할 수 있지만 그 방법을 알아낼 수는 없습니다. 여기

복제가

  1. http://library.iit.edu/mbad/#textbooks 이 텍스트 상자에 "후"를 입력 단계입니다. 코스리스트가 propogates.
  2. 첫 번째 목록 항목 (HUM102)을 선택하십시오.
  3. 마우스가 "Prof"또는 "E-items"버튼 중 하나를 가리키고 있습니다. 휴대 전화에서이를 테스트 중이라면 버튼 이벤트 중 하나가 실행됩니다.

누군가 내가 잘못하고있는 것을 알아낼 수 있습니까?

+0

긴 주말 후에 e.stopPropagation() 객체를 찾아 냈습니다. – camcclure

답변

관련 문제