jquery скрывает div, если мышь покидает его или вызывает span - PullRequest
0 голосов
/ 18 октября 2011

edit

Я все еще не могу заставить это работать ....

Я попробовал код ниже, и пока он работает на странице, ондоза не работает на элементах div и span Я хочу, чтобы он работал на ...

если вы перейдете на 2hon5.net , вы увидите, что код работает, он отображает всплывающие окна с помощью кодана 2hon5.net / js / 2hon5.js :

 $("#wordInf").css({'display':'block'}); 

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

Конец редактирования

Я пробовал несколько решений, включая это: аналогичный вопрос, который я не смог У меня есть всплывающая информация, которая отображает динамическую информацию в зависимости от того, над каким диапазоном она находится.Я установил его так, что он появится прямо под текущим промежутком.Я хочу, чтобы он исчез после небольшой задержки, если диапазон вызовов или сам div больше не зависают (так как в нем есть ссылки).У меня не было удачи, есть предложения?

<span onmouseover='callHover(code1234,this)' class='code 1234'>The calling span</span>
<span onmouseover='callHover(code1235,this)' class='code 1235'>The calling span</span>

Вызывается div:

<div id="codeInf" >
<span id="code_id">generated code here</span>
<a href="#">link 1</a>
<a href="#">link 2</a>
<a href="#">link 3</a>
<a href="#">link 4</a>
</div >

jquery для вызова div:

$("#codeInf").mouseover(showCode);
var showCode = function(ev) {
  var pos = $("#codeInf").offset();  
  var width = $("#codeInf").width();

  $("#codeInf").css( { "left": (pos.left + width) + "px", "top":pos.top + "px" } );
  $("#codeInf").show();
}

Iпопробовал код в вопросе, связанном с выше, но он не работает - может быть, из-за способа, которым я вызываю мой код?

В результате я хочу получить код, который будет скрывать код, если вызывающий диапазон ИЛИ codeInfdiv больше не наведен, один div можно вызывать для множества разных промежутков, поэтому я не хочу, чтобы отложенное скрытие влияло на него, если оно было вызвано другим промежутком.

Заранее спасибо за любыесовет.

Марк

Ответы [ 3 ]

1 голос
/ 18 октября 2011

Простая вещь состоит в том, чтобы добавить отпуск мышью как к spanу, так и к div всплывающего окна.

      $("span").hover(function() {
          // hide all other divs
          $("div").slideDown("slow");
      });

      function hidepanel() {
          if ($('div').is(':hover') === false) {
              $('div').slideUp(); 
          }
      }

      $('div').mouseleave(function() { setTimeout(hidepanel, 4000); });
      $('span').mouseleave(function() { setTimeout(hidepanel, 4000); });

http://jsfiddle.net/8CRVX/

1 голос
/ 12 ноября 2011

Это не идеальный результат, но я решил эту проблему, добавив onmouseout'hideChar () 'к вызову и сгенерировав div.

То есть я выполнил bool, чтобы установить div для зависания или нет:

var isWordHover=new Boolean(0);
var isCharHover=new Boolean(0);

function charHover2(){
isCharHover=Boolean(1);
setTimeout(HC, 4000);
}

Я установил его равным 0 при наведении мыши и 1 при наведении мыши.Нужно отработать некоторые ошибки (иногда это не дозволяет забрать мышь и т. Д. ... Но это скрывает всплывающее окно и дает возможность зависать и нажимать на ссылки.

Спасибо за совет всем.

Марка

1 голос
/ 18 октября 2011

Взгляните на документацию по jQuery

пример:

$("li").hover(function () {
    // focus
}, function () {
    // lost focus
});
...