2012-11-20 2 views
0

Я пытаюсь удалить атрибут заголовка из ссылки и использовать его для всплывающей подсказки, вот фрагмент кода, который дает мне неприятность:removeAttr избавиться от заголовка не работает в IE

$('.location').each(function() { 
    var $this = $(this); 
    $this 
     .data('title', $this.attr('title')) 
     .removeAttr('title'); 
    }); 


$('.location').hover(function(e) { 
    //hover over code 

    //grabs what's inside the title attribute in the html 
    var titleText = $(this).data('title'); 

    //saves the tooltip text using the data method, so that the orignal tooltip text does not conflict 
    $(this) 
     .data('tipText', titleText) 
     .removeAttr('title'); 

Я включил следующий код из поиска здесь:

$('.location').each(function() { 
    var $this = $(this); 
    $this 
     .data('title', $this.attr('title')) 
     .removeAttr('title'); 
    }); 

И это работает хорошо, но только один раз, если я вернусь к ссылке в IE8, оригинальная подсказка появляется снова. Любые решения для этого? Спасибо!

+0

Какой плагин для подсказок вы используете (если есть)? многие из них позаботятся об этом для вас. Может быть, вы можете посмотреть на одного из них для вдохновения. –

+0

Я создаю его из чтения об этом в книге, jQuery, Novice to Ninja. Это также ломается в их примере. Я надеялся, что для этого есть проблема. – Richard

ответ

2

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

Non -Рабочая: (обновлена ​​с кодом ниже, теперь работает)

http://jsfiddle.net/abZ6j/3/

<a href="#" title="foo" class="location">Test Link</a>​ 

$('.location').each(function() { 
    var $this = $(this); 
    $this 
     .data('title', $this.attr('title')) 
     .removeAttr('title'); 
});​ 

Рабочая:

http://jsfiddle.net/abZ6j/1/

<a href="#" linkTitle="foo" class="location">Test Link</a>​ 


$('.location').each(function() { 
    var $this = $(this); 
    $this 
     .data('title', $this.attr('linkTitle')) 
     .removeAttr('linkTitle'); 
});​ 

ОБНОВЛЕНО:

На самом деле, глядя на него ближе, вы можете использовать название, но в данном конкретном случае, было бы лучше, чтобы получить доступ к нему за пределами $ .data(). Возможно, что-то вроде:

var $this = $(this); 
var t = $this.attr('title'); 
$this 
    .data('title', t) 
    .removeAttr('title'); 
  • Обновленный "Нерабочий" jsFiddle код для отражения выше.
+0

Ну, цель состоит в том, чтобы получить все, что находится внутри атрибута title, и стилизовать его, но из того, что это звучит, это не лучший способ сделать это. – Richard

+0

Отлично, спасибо за обновление! Работает отлично! – Richard

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