素材牛VIP会员
jQuery在DOM中插入一个元素不起作用
 你***饭  分类:JavaScript  人气:634  回帖:7  发布于6年前 收藏

HTML结构是这样的:

<li class="hide-sub-menu">
    <ul>
        <li value="screen-15" class="submenu"><span>常规设置</span></li>
        <li value="screen-16" class="submenu"><span>数字证书</span></li>
    </ul>
</li>

js是这样写的:

$(".submenu").click(function(){
    $(this)[0].append('<span class="icon-arrow"></span>');
})

已经在CSS文件中写好了.icon-arrow的样式,<span class="icon-arrow></span>是个»符号,目的是点击当前的菜单动态添加一个»,以表示当前菜单被选中,上面写的结构是子菜单,主菜单通过这种方法是可行的,

但是到这里就不行了,插入效果是这样的:

试了一下这样写还是不行:

var icon_arrow = document.createElement("span");
icon_arrow.setAttribute("class","icon-arrow")
$(this)[0].appendChild(icon_arrow);
 标签:jqueryjavascript

讨论这个帖子(7)垃圾回帖将一律封号处理……

Lv5 码农
zz***25 其它 6年前#1
$(".submenu").click(function(){
    $(this).append('<span class="icon-arrow"></span>');
})
Lv5 码农
so***70 移动开发工程师 6年前#2

$(this)[0]多此一举,为何转换2次;
$(this)[0] === this;不明白你到底是想用jq的方法还是原生的方法;
如果想用原生的方法:this.appendChild('<span class="icon-arrow"></span>');
如果jq的方法:$(this).append('<span class="icon-arrow"></span>');||$('<span class="icon-arrow"></span>').appendTo($(this))

Lv3 码奴
wu***su 移动开发工程师 6年前#3

你换成这样写,根据自己的修改

$(".submenu").each(function(){
    $(this).click(function(){
        $(".submenu").html("");//看你这里要不要清空submenu下的内容
        $(this).append('<span class="icon-arrow"></span>');
    })
})
Lv6 码匠
on***de JAVA开发工程师 6年前#4

用each循环,在用$(this),直接后面添加你需要填的标签和样式

Lv6 码匠
你***饭 学生 6年前#5

$(this)将原生转换为jqdom
$(this)[0]jqdom转换为原生
$(this)[0]===this

Lv3 码奴
ba***pc JAVA开发工程师 6年前#6

$(this)[0]返回的是原生dom对象啊,后边还跟jQ方法?

Lv7 码师
这***人 JS工程师 6年前#7

原生对象和jq对象的区别

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取