Проблема Javascript с переменными - PullRequest
2 голосов
/ 20 августа 2010

Я создал функцию для отображения текста заголовка в отдельном div, его wotks отлично, но у меня есть проблемы с атрибутом «title», поэтому я не буду удалять его после того, как всплывающая подсказка не будет отображена. И на мышке вы покажете это, но переменная tooltipptext пуста ... это же идея?

var tooltipptext;    
$(".infoimg").hover(function(event) {
        tooltipptext = $(this).attr("title");

        showToolTip(event, tooltipptext);
        $(this).attr("title", "");

        return false;       
    });

    $(".infoimg").mouseout(function()   {
        $("#bubble_tooltip").hide();
        $(this).attr("title", tooltipptext);
        return false;
    });

1 Ответ

4 голосов
/ 20 августа 2010

.hover(), при прохождении одной функции она запускается на оба mouseenter и mouseleave, обрабатывая переменную, так как: *

tooltipptext = $(this).attr("title");

запускается снова после того, как $(this).attr("title", ""); уже запущено. Вместо этого передайте обе функции в .hover(), например:

var tooltipptext;    
$(".infoimg").hover(function() {
    tooltipptext = $(this).attr("title");
    showToolTip(event, tooltipptext);
    $(this).attr("title", "");
}, function()  {
    $("#bubble_tooltip").hide();
    $(this).attr("title", tooltipptext);
});

Или, поскольку вы никогда не видите атрибут заголовка при наведении, сохраните его один раз так:

$(".infoimg").each(function() {
  var title = $(this).attr("title");
  $(this).data('title', title).attr('title','');
}).hover(function() {      
  showToolTip(event, $.data(this, 'title'));
}, function()  {
  $("#bubble_tooltip").hide();
});

Это дает дополнительное преимущество работы с любым количеством изображений:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...