我有一个元素,其以“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”)
答案 0 :(得分:1)
使用attribute starts with选择器:[attr^=value]
根本不需要循环:
$("[id^=mn].elementSubMenuTitle").stop(true,true).fadeOut(200);
显然,您不再需要将选择器串在一起,因此也不需要+
。这实际上转化为您的
以“mn”开头且属于“elementSubMenuTitle”类的ID