2012-05-29 2 views
1

я использую tipsy pluginОтображение изображения в подсказке


enter image description here


Я хочу показать изображение пользователя, если кто-то Hover в его link.Now ссылка есть id, с помощью которого изображение хранится на сервере. так, например, если идентификатор является то изображение будет 4.jpg поэтому я использовал этот код, чтобы показать подсказку, как это:

$('.tipsy').tipsy({ 
     html: true, 
     gravity : 'e', 
     title: function() { 
      var i=0; 
      alert(++i + " first"); 
      var imgPath='<img height="50" width="50" src="dp/' + $(this).attr('id') + '.jpg" />'; 
      try{ 
       imgPath=$(imgPath).error(function() { 
        alert(++i + " middle"); 
        //imgPath='<img height="50" width="50" src="dp/no-image.jpg" />'; 
       }); 
      }catch(err){ 
       alert('inside catch'); 
      } 
      alert(++i + " last"); 
      return imgPath; 
     } 
    }); 

Но imgPath никогда не приходит высоту < IMG = «50» width = «50» src = «dp/no-image.jpg»/> Но технически говоря, значение noimage.jpg, если ошибка есть, но каждый раз, когда он показывает мне, img с src как <ID> .jpg

Также еще одна вещь, которую я заметил это ..... последовательность, когда никакой ошибки не существует:

  1. предупреждение (++ я + "первый");
  2. предупреждение (++ i + "last");

    и последовательность, когда ошибка есть:

    1. предупреждение (++ я + "первый");
    2. предупреждение (++ i + "last");
    3. предупреждение (++ i + "middle");

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

+0

Ваш imgPath - это строка HTML. Почему вы пытаетесь поместить это в объект jQuery? – Hidde

+0

, потому что я хочу знать, существует ли это изображение на сервере или нет ... так что поместите его в объект JQuery, чтобы вызвать 'error()' –

+0

ОК, я вижу. Вы пытались удалить предупреждения и сменить их на console.log()? Иногда предупреждения могут вызывать странные проблемы с синхронизацией – Hidde

ответ

1

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

http://craigsworks.com/projects/simpletip/

http://jquery.bassistance.de/tooltip/demo/

Надеется это помогает.

+0

это хорошо, но я хочу, чтобы моя работа работала ... ........ спасибо –

0

Ваша функция ошибки, по-видимому, называется асинхронной по какой-либо причине. Я не знаю, почему это происходит, вероятно, это может быть в Jquery Docs, но то, что вы можете сделать, это заставить синхронную проверку с помощью функции Ajax()

alert("first"); 
var imgPath; //not setting imgPath here 
     try{ 
      //using ajax() instead of earlier code 
      $.ajax({ 
       url: 'dp/' + $(this).attr('id') + '.jpg', //might need to give absolute path instead of relative one 
       type: 'get', 
       async:false, //making sync call to ensure this code is executed 
       error: function(XMLHttpRequest, textStatus, errorThrown){ 
        imgPath='no-image.jpg'; //if image doesnt exists then set no-image 
        alert("middle-error"); 
       }, 
       success: function(data){ 
        imgPath='dp/' + $(this).attr('id') + '.jpg'; //succes -set required      
        alert("middle-success"); 
       } 
      }); 
     }catch(err){ 
      alert('inside catch'); 
     } 
alert(" last"); 

То, что мы делаем здесь, проверяя, если изображение, например, dp/4.jpg существует на сервере.мы также вынуждаем sync на этот раз установить async:false

+0

нет успеха такая же проблема все еще там –

+0

try alerting $ (this) .attr ('src') внутренняя функция ошибки. Посмотрите, что она возвращает – Kshitij

+0

, она возвращает то, что я хочу, но проблема - это вызывающая последовательность ПЕРВЫЙ ПОСЛЕДНИЙ СРЕДНИЙ, это основная проблема –

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