javascript - js操作动态添加的元素的属性
伊谢尔伦
伊谢尔伦 2017-04-11 12:10:02
[JavaScript讨论组]

页面上有个p是通过js加上的

如何来在页面加载过程中改变这个p的属性(不能通过click等事件来改变),比如设置它的高度为100px

尝试过设置css,无效果

.bg{
    height:100px;
}

也尝试过

$(function(){
    $('.bg').css('height','100px')
})

都没有效果

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(6)
巴扎黑

你应该先F12调试一下,确定p已经加上,并且在改变它的属性之前,然后再看js终端,我觉得jquery那句应该是可以的,如果p已经被加

阿神

将函数改成.css({'width':'100px'});试试

巴扎黑

对于动态添加的元素,原有的事件是不起作用的,你需要通过事件代理(事件委托)来处理,也就是在不会改变的父元素绑定事件,通过冒泡来判断来源哪个动态添加的子元素,然后触发。
新版的(1.7+)Jquery.on方法可以实现事件代理

伊谢尔伦

首先 设置css是绝对有效的 css不受页面加载先后影响 只要这个样式在页面里 行间、内联、外联都无所谓
其次 js改变元素属性 jquery在页面初始化的时候 遍历了dom节点 之后动态加载的标签 根本就不在之前遍历的节点组里
操作这个节点的方法
1、你在插入这个元素之后执行相关事件方法
2、jquery的解决方案就是 on,live(1.7以下版本) 如果你确定有相关事件满足你的要求的话
on做了什么:根据你的参数对节点进行了遍历

伊谢尔伦

下面这段代码生效的前提是: $('.bg')选中的DOM节点是在 执行下面这段之前 就已经生成了。否则是没有鸟用的。

$(function(){
    $('.bg').css('height','100px')
})

你问题里说这个p是通过js加上的对吧,那么就在这个append操作之后紧跟着加上:

$('.bg').css('height','100px')

记住,一定要放在同步操作的作用块里,异步也是不生效的。

大家讲道理

看你也是用的jquery;可以这样使用:

$(function(){

    //即可在页面加载后操作动态加载的元素
    $('.bg').each(function(){
        $(this).css('height','100px');
    });

});
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号