0
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 修改?

4

6 回答 6

5

jQuery 函数返回一个字符串,而.html()不是一个 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);
于 2012-10-01T08:50:54.713 回答
1

您将方法应用于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;
}
于 2012-10-01T08:50:50.313 回答
1

html() 方法将返回选择器中给定的第一个匹配元素的 HTML 文本。在这里它只返回文本而不是 jQuery 对象

所以最好先找到 jQuery 对象并应用 CSS

var data = $("span", this);
data.css("font-size","10pt");
于 2012-10-01T08:52:15.337 回答
0

不要在 html 上应用 css ...你必须在 span 上应用它:

var data = $("span", this).css("font-size","10pt").html(); /*grab all */
于 2012-10-01T08:50:45.833 回答
0

尝试用 $() 包装数据以将其转换为 jQuery 对象

$(data).css('font-size','10pt');
于 2012-10-01T08:51:03.397 回答
0

您只需要将格式应用于实际的 span 元素。.html() 以字符串格式获取 HTML,因此 .css 不起作用。

如果您想在整个跨度上执行 .css,只需将变量更改为var data = $("span", this);

于 2012-10-01T08:51:22.943 回答