ajax使用append()后样式无效,jquery.ajax使用字符串拼接后内联css样式失效
时间: 2024-03-23 18:36:45 浏览: 257
如果使用 jQuery 的 append() 方法添加 HTML 代码后出现样式失效的问题,可能是因为添加的元素是动态生成的,而样式表已经被加载完成,浏览器无法将样式应用到动态生成的元素上。
解决这个问题的方法是,可以使用 jQuery 的 on() 方法来代替 append() 方法,将 HTML 代码添加到指定的 DOM 元素中。这样添加的元素会被浏览器正确解析,样式也会生效。具体的代码如下:
```javascript
$('body').on('DOMNodeInserted', '.myClass', function() {
$(this).css('color', 'red');
});
```
这段代码中,我们使用 on() 方法来监听 .myClass 元素的插入事件,当这个元素被添加到 body 中时,就会触发 DOMNodeInserted 事件,然后我们再将样式应用到这个元素上。
如果需要添加多个样式,可以将样式写成 CSS 类,然后使用 addClass() 方法将这个类添加到元素上。如下代码所示:
```javascript
.myClass {
color: red;
font-size: 16px;
}
$('body').on('DOMNodeInserted', '.myClass', function() {
$(this).addClass('myClass');
});
```
这样添加的元素样式就可以生效了。
相关问题
ajax使用html()后样式无效,jquery.ajax使用字符串拼接后内联css样式失效
这是因为通过 html() 方法或字符串拼接方式添加的 HTML 代码中的样式是动态添加的,浏览器在渲染时可能会出现问题。解决这个问题的方法是,可以通过以下两种方式来添加样式:
1. 使用 jQuery 的 append() 方法,将 HTML 代码添加到指定的 DOM 元素中。这样添加的元素会被浏览器正确解析,样式也会生效。
2. 使用动态创建的 CSS 样式表,将样式以 CSS 的形式添加到页面中。这种方式需要使用 jQuery 的 append() 方法将样式表添加到 head 标签中,然后再通过类名或 ID 等方式将样式应用到指定的元素上。
举个例子,如下代码可以解决使用字符串拼接方式内联样式失效的问题:
```javascript
var html = "<div class='myClass'>这是一个例子</div>";
var style = "<style>.myClass{color:red;}</style>";
$('head').append(style);
$('body').append(html);
```
这样添加的元素样式就可以生效了。
ajax使用append()后样式无效,jquery.ajax使用字符串拼接后外联css样式失效
如果使用 jQuery 的 append() 方法添加 HTML 代码后出现外联样式失效的问题,可能是因为样式表的加载顺序不正确。在使用 jQuery 的 append() 方法添加 HTML 代码时,如果样式表还没有加载完成,添加的元素样式可能会受到影响。
解决这个问题的方法是,可以将样式表提前加载,或者使用 jQuery 的 getScript() 方法异步加载样式表,确保样式表在添加元素之前已经加载完成。
具体的代码如下:
```javascript
$.getScript('style.css', function() {
$('body').append('<div class="myClass">这是一个例子</div>');
});
```
这段代码中,我们使用 getScript() 方法异步加载样式表 style.css,当样式表加载完成后,就会执行回调函数,然后我们再使用 append() 方法将 HTML 代码添加到 body 中。
如果需要添加多个样式,可以将样式写成 CSS 类,然后使用 addClass() 方法将这个类添加到元素上。如下代码所示:
```javascript
.myClass {
color: red;
font-size: 16px;
}
$.getScript('style.css', function() {
$('body').append('<div class="myClass">这是一个例子</div>');
$('.myClass').addClass('myClass');
});
```
这样添加的元素样式就可以生效了。
阅读全文