gpt4 book ai didi

Jquery:在某些元素上运行方法,但不在其他元素上运行方法

转载 作者:行者123 更新时间:2023-12-01 06:32:09 24 4
gpt4 key购买 nike

我很难弄清楚如何在某些元素/节点类型上运行方法,但在其他元素/节点类型上则不然。

例如,这是一些 HTML:

<div id="parent">
<div class="subparent">Changing Text
<div class="no-change">Changing Text</div>
</div>
<div class="subparent">Changing Text</div>
<div class="child">Changing Text
<div class="no-change">Changing Text</div>
</div>
<div class="subparent">Changing Text</div>
</div>

我的方法是这样的:

jQuery.fn.changingtext = function(expr) {
return this.each(function() {
this.innerHTML = this.innerHTML
.replace(/Changing Text/ig, "Edited!")
});
};

现在我想更改除 div.no-change 之外的所有内容的文本。最终结果应该是这样的:

<div id="parent">
<div class="subparent">Edited!
<div class="no-change">Changing Text</div>
</div>
<div class="subparent">Edited!</div>
<div class="child">Edited!
<div class="no-change">Changing Text</div>
</div>
<div class="subparent">Edited!</div>
</div>

我不知道有什么方法可以选择父级而不在其子级上运行该方法。任何帮助,将不胜感激。谢谢!

编辑:这里使用保罗的代码并且不起作用: http://jsbin.com/usaxa

编辑@Jeff Meatball Yang:您好,使用就地替换它会输出为文本而不是 html: http://jsbin.com/idina

我也无法让其他方法正常工作: http://jsbin.com/aguca

您能举个例子吗?

谢谢!

最佳答案

我不太确定你为什么要编写一个插件来执行此操作。这将找到所有 <div> #parent 中的元素,过滤掉那些不具有 .no-change 类的元素,并编辑其中的文本内容:

$('#parent').find('div').not('.no-change').text('Edited!');

也可以写成:

$('#parent div:not(.no-change)').text('Edited!');

jQuery 非常擅长处理元素集,您不必循环遍历它们等。

编辑:

考虑到 CMS 的良好观察,这应该有效:

$('#parent').find('div').not('.no-change').each(function() {
$(this).contents().not('*').eq(0).replaceWith('Whatever');
});

关于Jquery:在某些元素上运行方法,但不在其他元素上运行方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1030550/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com