JQuery动态地改变了属性包含'选择器不适用于var

时间:2014-11-05 15:41:57

标签: jquery string variables dynamic selector

我有一个元素,其以“mn”开始,并且类似于“elementSubMenuTitle”,如下所示:

$("#mn"+j).append("<p id='mn"+j+"rpt"+i+"' 
class='elementSubMenuTitle'>"+reportList[i].ReportName+"</p>");

如果我使用$("[id^='mn0']+.elementSubMenuTitle")的jquery选择器,它可以找到我的第一个元素(mn0rpt0),但是我需要它能够遍历未知数量的这些元素,这些元素遵循mn0rpt0,mn0rpt1的模式,mn1rpt2等 使用

var x = String(0); 
$("[id^=mn"+x+"]+.elementSubMenuTitle").stop(true,true).fadeOut(200); 

找到“mn0 ..”,但显然我还需要找到“mn1 ..”和其他人,所以我试过了:

for(var i = 0; i < catList.length; i++) 
{
var x = String(i);
$("[id^=mn"+x+"]+.elementSubMenuTitle").stop(true,true).fadeOut(200);
}

但这种做法不起作用 那么为什么String(0)会产生一个字符串,而String(i)不会呢? (至少那是我的理论)

详细说明: 有一些父元素遵循命名法 MN0 MN1 MN2 MN3 .. 这些都是通过循环设置的。

如果是mn0的子元素,则有以mn0开头的子元素,例如mn0rpt0是mn0的子元素,但不是唯一的子元素。我感兴趣的孩子具有班级elementSubMenuTitle,也以mn0开头。同样适用于mn1和它的孩子等等。

循环的目的是为“mnx”的子集设置特定行为。该行为将根据x而变化。例如,$(mnx的子)将需要放置在$(mn(x-1)的子项)之下的(x * 30)像素,等等。因此x是必要的,因此是循环。

最后,我问var x = String(i) var x = String(0)在{{1}}插入$(“[id ^ = mn”+ x +“] +。elementSubMenuTitle”)

时{{1}}无效

1 个答案:

答案 0 :(得分:1)

使用attribute starts with选择器:[attr^=value]

根本不需要循环:

$("[id^=mn].elementSubMenuTitle").stop(true,true).fadeOut(200);

显然,您不再需要将选择器串在一起,因此也不需要+。这实际上转化为您的

要求
  

以“mn”开头且属于“elementSubMenuTitle”类的ID