javascript - Jquery 没有按要求删除所有内容

标签 javascript jquery html css

我的网页上有以下代码。

<div id="phoneDiv">+7 (999) 999-9999
    <div class="editmode">
        <input type="text" placeholder="Телефон" value="+7 (999) 999-9999" id="editPhone" name="editPhone" class="text key">
    </div>
</div>

我只需要删除文本而不删除 div.editmode

我使用了函数:

$(document).on('click','#phoneDiv',function(){
$("#phoneDiv").not('div.editmode, div.editmode *').remove();
});

但它只是删除了所有内容。

为什么这不起作用?这是我的 jsfiddle

最佳答案

首先,您不应该这样使用 .not()。它用于过滤您正在处理的实际 JQuery 对象中的元素(在您的情况下,您选择 #phoneDiv),而不是它的子对象...

但是,要删除文本,您需要以不同的方式定位它,因为它实际上不是一个元素。你可以通过.contents()获取。过滤掉div元素,然后执行.remove()

Updated JsFiddle

$(document).on('click','#phoneDiv',function(){
    $("#phoneDiv").contents().filter(function() {
        return (!$(this).is(".editmode"));
    }).remove();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="phoneDiv">+7 (999) 999-9999
    <div class="editmode">
        <input type="text" placeholder="Телефон" value="+7 (999) 999-9999" id="editPhone" name="editPhone" class="text key" />
    </div>
</div>

关于javascript - Jquery 没有按要求删除所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27430394/

相关文章:

php - 如何让Gmail像加载进度条一样

javascript - 如何使用 hapi js 进行每个用户的基本日志记录

javascript - 如何设置 jQuery 微调器的最大值和最小值?

javascript - Onclick 将 div 显示为 block 不起作用?

javascript - 我的输入字符串值不会显示在我的列表中

javascript - Canvas 不在移动版 chrome 上绘制,但会在 safari 上绘制

javascript - 如何从 anchor 标记中提取 href 值并作为文本插入?

javascript - 如何获取距离当前位置最近的元素的值?

javascript - 使用 rel ="follow"设置所有外部链接时,如何手动将 rel ="nofollow"添加到特定域?

javascript - 如何在 Bootstrap 下拉列表中获取选定元素,其中下拉列表是动态填充的