JQuery CSS на HTML () текст
var data = $("span", this).html(); /*grab all */
$calPopup.stop().fadeTo(300,1);
$calPopup.html(data);
Я хочу сделать что-то вроде:
data.css("font-size","10pt");
Но если я это сделаю, HTML-текст даже не появится. Инспектор Chrome говорит это:
Uncaught TypeError: Object *** has no method 'css'
Как я могу применить модификацию CSS к тексту?
6 ответов
.html()
Функция jQuery возвращает строку, а не объект jQuery, так что нет .css()
функция для использования. Однако, если вы хотите применить этот стиль CSS ко всем этим <span>
элементы, это так же просто, как назвать ваш .css()
работать непосредственно с выбранным им объектом jQuery:
$('span', this).css('font-size', '10pt');
Обратите внимание, что я удалил объявление переменной, потому что, основываясь на предоставленном коде, оно кажется ненужным. Также обратите внимание, что .html()
Функция вернет HTML только для первого соответствующего элемента, но не для всех, поэтому, если у вас более одного <span>
элемент, то вы получите только первый HTML.
Для внесения изменений в вопрос:
var data = $("span", this).clone().css('font-size', '10pt');
$calPopup.stop().fadeTo(300,1);
$calPopup.empty().append(data);
Вы применяете css()
метод к строке, возвращаемой html()
метод, а не сам элемент.
Делать вместо
var data = $("span", this).css("font-size","10pt").html();
или, что еще лучше, держитесь подальше от стиля из javascript: просто назначьте класс вашему span
элемент и пусть правило CSS дать правильный стиль
var data = $("span", this).addClass("yourclass").html();
CSS
.yourclass {
font-size : 10pt;
}
Метод html() вернет HTML-текст первого сопоставленного элемента, указанного в селекторе. Здесь он возвращает только текст, а не JQuery Object
Так что лучше сначала найти объект jQuery и применить CSS
var data = $("span", this);
data.css("font-size","10pt");
Попробуйте обернуть данные с помощью $(), чтобы преобразовать их в объект jQuery
$(data).css('font-size','10pt');
Не применяйте CSS к HTML... Вы должны применить его к span:
var data = $("span", this).css("font-size","10pt").html(); /*grab all */
Вам просто нужно применить ваше форматирование к фактическому элементу span. .html() получает HTML в строковом формате, поэтому.css не будет работать.
Если вы хотите сделать.css на весь промежуток, просто измените вашу переменную на var data = $("span", this);