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

Jquery 选择具有textContent的元素,然后替换元素ID,jquery,css,Jquery,Css,我有一堆带有动态生成ID的div('.program collector')。这些ID通常不止一个单词,因此我在PHP中使用strtok方法将ID缩减为原始多单词ID字符串的第一个单词,效果很好 然而,其中两个div的第一个单词相同(“表演基础”和“表演高级”),因此我试图用一个包含原始ID字符串“表演基础”的标题来标识div,并用一个新的ID(“基础”)替换它的ID 在我的jquery中,我尝试使用textContent属性使用此方法 $('.program-collector').each(

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

然而,其中两个div的第一个单词相同(“表演基础”和“表演高级”),因此我试图用一个包含原始ID字符串“表演基础”的标题来标识div,并用一个新的ID(“基础”)替换它的ID

在我的jquery中,我尝试使用textContent属性使用此方法

$('.program-collector').each(function(k,ttl) {
    if($(ttl).find("h3").textContent =="Acting Basics") {
        alert("Alert");
        $(ttl).attr("id","Basics");
    }
};
。。。但这不会触发警报弹出窗口或更改ID,因此代码中的某些内容已关闭。有谁能解释一下如何改进我的代码,或者对我应该使用的另一种方法给出建议吗?

$(ttl).查找(“h3”).textContent
应该是
$(ttl).查找(“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');

这里有一个简化版本,它不需要
每个()函数

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

谢谢巴尔马。不过,我还是得到了相同的结果。在比较之前尝试修剪它,以防文本周围有空白。这会将ID添加到
h3
,而不是
。程序收集器
。这很有效,尽管您最初的尝试让我想到了答案中的一行。谢谢Dinmyte。很明显,你的方法是有效的,但我仍然无法在我的页面上看到任何东西,因此一定有一些元素出于某种原因阻止了该功能。你能创建一个html文件吗?我们可以找出它为什么不起作用