选择具有textContent的元素,然后替换元素ID

时间:2015-11-06 20:16:01

标签: jquery css

我有一堆带有动态生成ID的div('.program-collector')。这些ID通常不止一个单词,所以我在我的PHP中使用strtok方法将ID减少到原始多字ID字符串的第一个单词,这很好。

然而,其中两个div具有相同的第一个单词(“代理基础”和“代理高级”),所以我试图识别包含<中的标题的div em>原始“代理基础知识”的ID字符串,并用新的ID替换它的ID(“基础知识”)。

在我的jquery中,我尝试使用textContent属性...

$('.program-collector').each(function(k,ttl) {
    if($(ttl).find("h3").textContent =="Acting Basics") {
        alert("Alert");
        $(ttl).attr("id","Basics");
    }
};

...但是这不会触发警报弹出窗口或更改ID,因此我的代码中的某些内容已关闭。任何人都可以阐明如何改进我的代码或就我应该使用的另一种方法提出建议吗?

2 个答案:

答案 0 :(得分:2)

$(ttl).find("h3").textContent应为$(ttl).find("h3").text()textContent是DOM属性,而不是jQuery方法。

你也可能在元素中有空格。如果它不匹配,请尝试修剪它:

$('.program-collector').each(function(k,ttl) {
    if($(ttl).find("h3").text().trim() =="Acting Basics") {
        alert("Alert");
        $(ttl).attr("id","Basics");
    }
};

您可以通过一次通话完成此操作:

$('.program-collector:has(h3:contains("Acting Basics"))').attr('id', 'Basics');

答案 1 :(得分:0)

这是一个不需要each()功能的简化版本。

$('.program-collector').find('h3:contains("Acting Basics")').closest('.program-collector').attr("id","Basics");

http://jsfiddle.net/bhx36p9f/