2010-06-21 4 views
0
$('textarea').focus(function() { 
    var img = $(this).css('background-image'); 
    $(this).css('background-image', 'none'); 
}); 
$('textarea').blur(function() { 
    $(this).css('background-image', img); 
}); 

.., похоже, не работает. Я думаю, что что-то не так, но я не могу понять, что.Переключение фонового изображения (jQuery)

Большое спасибо за вашу помощь!

ответ

7

Если определить

var img 

только внутри обработчика событий .focus(), что переменная не будет доступна в .blur()

Так как определить var img globaly или использовать jQuerys .data() метод, например.

пишут:

$.data(this, 'img', $(this).css('background-image')); 

чтения:

$.data(this, 'img'); 

пример:

$('textarea').focus(function() { 
    var $this = $(this); 
    $.data(this, 'img', $this.css('background-image')); 
    $this.css('background-image', 'none'); 
}); 
$('textarea').blur(function() { 
    $(this).css('background-image', $.data(this, 'img') || ''); 
}); 
+1

+1 - Я бы просто сделал '$ .data (это, 'img')', хотя здесь нет необходимости создавать впустую объект. –

+0

@Nick: Я не знал, что '$ .data()' также работает с объектами DOM. хороший! – jAndy

+0

erm ... Можете ли вы показать пример, я не могу заставить его работать. благодаря! – 3zzy

0

Try определить URL-адрес для изображения в CSS.

var img = 'images/mybg.png'; 
$('textarea').blur(function() { 
    $(this).css('background-image', 'url('+img+')'); 
}); 
Смежные вопросы