0

我有一个可行的解决方案,但我的服务器今天下午实际上崩溃了。不幸的是,我没有签入我的工作代码。当天早些时候,我从 StackOverflow 获得了帮助以使我的代码正常工作,并且我使用了上一篇文章中的答案,但它不再有效。=(

无论如何。我试图做的是找到一个包含一些文本的标签,并将 ID 分配给元素。

这是HTML:

<DT>change me dynamically</DT>
<DD>
<input class=" text" type="text"  name="contact_details"  value=""  id="contact_details" >
<P CLASS="descr"></P>
</DD>

我想通过查询对这段代码做的是让它看起来像这样:

<DT id="contactTypeLabel">Phone Number</DT>
<DD>
<input class=" text" type="text"  name="contact_details"  value=""  id="contact_details" >
<P CLASS="descr"></P>
</DD>

这是我之前使用的代码:

$('body >DT:contains("change me dynamically")').contents().each(function () {
    var exp = /change me dynamically/;
    alert("nodevalue is:" + this.nodeValue);       
    if (this.nodeValue && exp.test(this.nodeValue)) {
        var $parent = $(this).parent().attr('id', 'contactTypeLabel');
        $parent.text(function(_, text){
           return  text.replace(exp, "Phone Number");
        }); 
    }
}); 

警报永远不会发生。如果我通过这样做来扩大搜索范围:

$('body :contains("change me dynamically")').contents().each(function () {

然后我收到许多警报声明。但实际上,我只有一个带有“动态改变我”文本的元素。

很抱歉之前帮助过我的人。我确实尝试过查看之前的所有笔记......但我似乎找不到错误。这是艰难的一天,我很烦,所以我可能错过了一些简单的事情。

谢谢。

4

1 回答 1

1

描述

DTDD标签通常嵌套在DL标签内。选择器:

$('body >DT:contains("change me dynamically")').contents().each(function () {

仅查找DT节点的直接后代body节点,跳过另一个节点内部的任何节点。但是,以下代码段将范围扩大到包含该文本的任何节点:

$('body :contains("change me dynamically")').contents().each(function () {

解决方案

您可能正在寻找的是一个将在 a中查找包含该文本的DT节点:DL

$('body DL>DT:contains("change me dynamically")').contents().each(function () {

或者只是DT包含文本的任何节点:

$('body DT:contains("change me dynamically")').contents().each(function () {

信息

有关详细信息,请参阅有关子选择器的文章。

于 2013-07-02T23:59:40.117 回答