2012-02-14 5 views
1

Я разрабатываю приложение HTML5 для клиента для их внутреннего использования на платформе iPad. Все идет очень хорошо, реализуя различные решения JQUERY для множества задач, но это, похоже, не имеет смысла.Повторное событие JQuery Click on Next Click в Mobile Safari

У них есть список элементов на странице, которые содержатся в неуказанном списке, который они хотели бы, чтобы их пользователи могли перетаскивать, чтобы перетасовать заказ, или нажмите кнопку «Удалить», чтобы удалить одну из Предметы.

У меня есть сортировка просто отлично, и она удаляется только отлично. Но затем, при тестировании на iPad, после того, как я нажал кнопку удаления, он проходит через подтверждение и выполняет операцию, которую я определил. Но затем, в следующий раз, когда я нажимаю на экран, триггеры снова нажимают событие, даже если я далеко от div, который определен для запуска этого события.

Вот HTML фрагмент одного из

  • тегов, сортирует и удаляет:

    <li id="12345"> 
    <div class="clearfix"> 
        <div class="product-image"> 
         <img src="../../img/presentation.png" width="200" height="140" /> 
        </div> 
        <div class="product-info"> 
         <div class="details"> 
          <h3><a class="name" href="#">Comparison</a></h3> 
          <ul> 
           <li><strong>Competitor: </strong>[Brand]</li> 
           <li><strong>Us: </strong>[Brand]</li> 
          </ul>          
         </div> 
         <div class="brand"> 
          <div class="remove" style="width: 30px; height: 30px;">(&times;)</div> 
          <div class="edit-bar"><img src="../../img/presentations-edit-bars.png" /></div> 
          <p class="logo">[Distributor]</p> 
         </div> 
        </div>   
    </div> 
    

  • Вот различные JQuery включает и внутренний Javascript для выполнения этих задач:

    <script src="../../js/libs/jquery.min.js" type="text/javascript"></script> 
    <script src="../../js/libs/jquery-ui.min.js" type="text/javascript"></script> 
    <script src="../../js/libs/jquery.ui.touch-punch.min.js" type="text/javascript"></script> 
    <script language="javascript" type="text/javascript"> 
        $(function() { 
         $(".remove").click(function() { 
          var e = $(this); 
    
          this.style.backgroundColor = "#FFAAAA"; 
    
          var p = this.parentNode; 
          var count = 1; 
          while (p.tagName != 'LI') { 
           p = p.parentNode; 
           count++; 
          } 
    
          var cont = confirm("Are you sure you would like to delete this item?"); 
    
          if (cont) { 
           var deletedItems = document.getElementById('deletedItems'); 
           if (deletedItems.value != "") { 
            deletedItems.value += ","; 
           } 
           deletedItems.value += p.id; 
           p.style.display = 'none'; 
          } 
    
          this.style.backgroundColor = "transparent"; 
         }); 
         $("#sortable").sortable({ 
          stop: function (event, ui) { 
           var newOrder = ""; 
           for (i = 0; i < $("#sortable li").size(); i++) { 
            newOrder += $("#sortable li").get(i).id; 
            if (i < $("#sortable li").size() - 1) { 
             newOrder += ","; 
            } 
           } 
           document.getElementById('currentOrder').value = newOrder; 
          } 
         }); 
         $("#sortable").disableSelection(); 
        }); 
    </script> 
    

    ответ

    1

    Это похоже на общую проблему, с которой сталкиваются многие люди. Вероятная причина заключается в том, что на iPad у вас есть два события, вызывающие вызов и нажмите.

    Решения было бы отвязать свои события перед обработкой фактического события как

    $('.remove').unbind('click touchstart').click(function() { ... } 
    

    Надеется, что это работает.

    +0

    Спасибо большое - и спасибо за ссылку, как хорошо! – unclesol

    +0

    Добро пожаловать ... – testndtv

    Смежные вопросы