2016-03-30 7 views
0

Я сделал виджет в сводном представлении модуля учетной записи. В этом виджета я хочу использовать slideToggle для отображения некоторых деталей. Иногда код работает отлично, но в других случаях он дважды переключается и мгновенно закрывает детали.Vtiger - Jquery slideToggle случайным образом переключается дважды

JS:

$(document).ready(function() { 
     $('.potential_single_title').on('click',function(e) { 
      $(this).parent().find('.potential_comment_list').slideToggle('slow'); 
     }); 
    }); 

TPL:

<script src="resources/ChildCommentScript.js"></script> 
<link rel="stylesheet" type="text/css" href="resources/ChildCommentStyle.css"> 

{strip} 
    <div class="potential_comment_container"> 
    {foreach from=$OPP key=K item=POT} 
     <br /> 
     <div class="potential_single"> 
      <div class="potential_single_title"> 
       <strong>{$POT[1]}</strong> <span class="potential_assignee">Assigned to : {$POT[2]}</span> 
      </div> 
      <hr> 
      <div class="potential_comment_list"> 
       <div class="commentContainer"> 
       {foreach from=$COM[$K] item=POTCOM} 
        <div class="commentDetails" style="width:100%;"> 
         <div class="span1"> 
          <img class="alignMiddle pull-left" src="layouts/vlayout/skins/images/DefaultUserIcon.png"> 
         </div> 
         <span class="commentorName"><strong> {$POTCOM[0]}</strong></span> 
         <span class="pull-right"><p class="muted"><small>{$POTCOM[1]}</small></p></span> 
         <div class="commentInfoContent">{$POTCOM[2]}</div> 
        </div> 
       {/foreach} 
       </div> 
      </div> 
     </div> 
    {/foreach} 
    </div> 
{/strip} 

ответ

2

Использование перек кажется правильным. Я подозреваю, что щелчок происходит дважды, что вызывает слайд. Изменение JS для отклонения кликов, если действие слайда происходит, может решить проблему.

$(document).ready(function() { 
    var sliding = false; 
    $('.potential_single_title').on('click',function(e) { 
     if(sliding) return false; 
     sliding = true; 
     $(this).parent().find('.potential_comment_list').slideToggle('slow', function() {sliding = false;}); 
    }); 
}); 

Простой флаг для отказа от действия щелчка при включении скольжения!

+0

Thnx для ответа, но, к сожалению, div по-прежнему дважды переключается. Если я обновляюсь пару раз, он снова работает отлично. Он может противоречить собственным файлам JS Vtiger или, возможно, это происходит, потому что страница создается php, используя файл .tpl, и это немного, как загружает его дважды. –

+0

Да, похоже, что js выглядит нормально. Могу ли я предложить вам отладить, если он выключен дважды. Дважды щелкнули, или если это действительно проблема с js – Seabizkit

+0

Подожди, не правда ли, что у тебя есть протектив для более чем одного «пота» ntial_single_title "на странице в любой момент времени ... это будет переключать их все, учитывая, что это в ** {foreach from = $ OPP key = K item = POT} ** – Seabizkit

0

Это просто, чтобы показать, как можно щелкнуть дважды.

$(document).ready(function() { 
      $('.potential_single_title').on('click',function(e) { 
       console.log("clicked") 
      }); 
     }); 

за один клик .. если в консоли вы видите щелкнул два раза вы можете предположить, триггер счастливым ;-)

попробовать также положить отладчик там ... может выделить вещи

$(document).ready(function() { 
       $('.potential_single_title').on('click',function(e) { 
        console.log("clicked"); 
debugger; 
       }); 
      }); 

В хром консоль отладки должна быть открыта для попадания в линию отладчика.

Просто хочу исключить глупые вещи .. это один для одного, что на странице нет других js ... например, может быть, ваша упаковка $ (document) .ready (дважды или что-то еще и только havnt включала этот код в вопрос?

+0

Видимо, я запускаю счастливый, потому что меня дважды щелкают одним щелчком мыши. Что касается вас, это все JS в этом файле. На странице больше JS, но это стандартный файл vtiger JS –

+0

, который вы мне рассказали о готовом документе, поэтому я удалил его, чтобы посмотреть, что происходит, и теперь работает ответ @lohith. thnx для помощи чуваку. –