【发布时间】:2014-11-05 15:41:57
【问题描述】:
我有一个元素,它的 ID 以“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 的模式, ETC。
使用
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 而异。例如,$(child of mnx) 将需要放置在 $(child of mn(x-1)) 下方 (x*30) 个像素,等等。因此 x 是必要的,因此是循环。
最终,我问为什么var x = String(i) 在插入 $("[id^=mn"+x+"]+.elementSubMenuTitle") 时不起作用,而 var x = String(0) 起作用
【问题讨论】:
-
$("[id^='mn']")不够用吗? -
@j08691:如果您在其他页面上有
<div id="mnemonic">怎么办? :) 是的,在这种情况下,该类应添加到 starts-with 选择器 中(并且已明确请求)。如果是单个 ID 匹配,那么该类将被废弃。
标签: jquery string variables dynamic selector