Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.07.2017, 18:40
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

druggble последовательность отработки событий в разных браузерах
Доброго всем времени суток!

Имеется небольшой модуль для сайта, в котором есть блоки с иформацией. Эти блоки находятся в свёрнутом состоянии и разворачиваться должны по клику.

Так же эти же блоки должны перетаскиваться по странице.

код инициализации всего этого выглядит так:
blocks.bind('click', catchBlock);
	blocks.not('.nondruggble').draggable({stop : LetGo, start : startMove});


Проблема в том, что с точки зрения браузера перетаскивание - это просто очень длинный клик и поэтому после перетаскивания событие клика тоже срабатывает, поэтому я сделал так
var startMove = function(e) {
	var t = $(this);
	t.css({'z-index' : 1000});
	t.unbind('click');
}
var LetGo = function(event, ui) {
	var t = $(this);
	t.css({'z-index' : ''});
	t.bind('click', catchBlock);
}

Но тут в силу вступает разность браузеров. Проверено было на хроме и мазиле. На хроме такой финт ушами сработал корректно, а мазиле же при таком раскладе блоки всё равно разворачиваются после того, как к ним вновь назначается отработка события клика. Что мне кажется странным, но пока не понимаю, как это решить.

Буду очень признателен за совет!
Ответить с цитированием
  #2 (permalink)  
Старый 27.07.2017, 19:23
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

открывашка 223 зависимая + перемещение блоков
NapalmRain,
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title> - jsFiddle demo</title>

 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
  <style type='text/css'>
    .block1, .block3 {
  position: relative;
  width: 500px;
  height: 50px;
  background: blue;
}

.block2 {
  position: relative;
  width: 500px;
  height: 125px;
  background: #fff;
  padding: 25px;
  transition: all 0.5s ease;
}

.block2 > div {
  float: left;
  width: 250px;
}

.elem {
  position: relative;
  margin-bottom: 20px;
  width: 200px;
}

.head {
  width: 100%;
  height: 30px;
  text-align: center;
  line-height: 30px;
  background: green;
  color: #fff;
  font-weight: 700;
  cursor: pointer;
}

.hide {
  border-top: none!important;
  border: 1px solid #bbb;
  padding: 10px;
}
  </style>



<script>
$(function() {
    var $h = $(".hide"),
        $a = $(".head"),
        $b = $(".block2");
    $h.each(function(indx, el) {
        el = $(el);
        var contHeight = el.height(),
            head = $a.eq(indx);
        el.hide();
        head.on("click", function(event) {
            if($(this).parents(".dragg").length) return;
            event.preventDefault();
            $h.stop(true,true).not(el.slideToggle(800)).slideUp(800);
            $a.not(head.toggleClass("open")).removeClass("open");
            $b.height(125 + head.is(".open") * contHeight)
        })
    })

 $(".elem").draggable({delay:100 ,stop : function() {
  window.setTimeout(function() {
  $(".elem").removeClass("dragg")
},10)
}, start : function() {
  $(this).addClass("dragg")
}})
});

</script>


</head>
<body>
  <div class="block1"></div>
<div class="block2">
  <div class="left">
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Длинный спрятанный контент</div>
    </div>
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Очень-очень длинный трудночитаемый спрятанный контент</div>
    </div>
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Спрятанный контент</div>
    </div>
  </div>
  <div class="right">
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Спрятанный контент</div>
    </div>
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Спрятанный контент</div>
    </div>
    <div class="elem">
      <div class="head">Клик</div>
      <div class="hide">Спрятанный контент</div>
    </div>
  </div>
</div>
<div class="block3"></div>

</body>


</html>
Ответить с цитированием
  #3 (permalink)  
Старый 28.07.2017, 09:46
Аспирант
Отправить личное сообщение для NapalmRain Посмотреть профиль Найти все сообщения от NapalmRain
 
Регистрация: 17.03.2014
Сообщений: 40

рони,
Благодарю! timeout в событии стоп спас.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очерёдность событий в разных браузерах. geekay Javascript под браузер 3 26.08.2015 13:40
Почему padding вокруг текста в разных браузерах Artem Narushevich (X)HTML/CSS 3 02.08.2013 16:51
Проблема метода indexOf() в разных браузерах! Rodger1956629 Javascript под браузер 7 31.07.2013 02:54
Срабатывание скрипта в разные моменты при загрузки в разных браузерах VitalikPro Javascript под браузер 10 29.12.2011 18:24
Проблемы с событием onmouseover в разных браузерах jsuse Общие вопросы Javascript 4 29.11.2011 18:30