我有一段HTML标记,对于课程来说看起来像这样。这是由我的客户使用的CMS预定义的
<ul class="box-3036">
<li aria-selected="true">
<a href="#" id="ui-id-5">Dentistry</a>
</li>
</ul>
我有一堆课程,这是另一门课程的HTML块的另一个示例。
<ul class="box-3032">
<li aria-selected="true">
<a href="#" id="ui-id-7">Pharmacy</a>
</li>
</ul>
我正在尝试为所有这些课程编写jQuery代码。在HTML块中,这是唯一的信息
<ul>
班<a>
ID<a>
点击打开了两个课程网址这是我现在拥有的jQuery代码。我面临的问题是URL变量给了我未定义的值
box = [
".box-3036",
".box-3032"
];
uiid = [
"a#ui-id-5",
"a#ui-id-7"
];
urlfirst = [
"http://www.yahoo.com",
"http://www.gmail.com"
];
urlsecond = [
"http://www.google.com",
"http://www.7senarai.com "
];
for (var i = 0; i < box.length; i++) {
$(box[i] + " " + uiid[i]).click(function() {
var pid = $(this).parent().attr("aria-selected");
if(pid == "true") {
//window.open(urlfirst[i], '_blank');
//window.location.href = urlsecond[i];
alert(urlfirst[i]);
alert(urlsecond[i]);
}
});
}
这是我的jsfiddle
问题在于var i
for循环的作用域位于传递给单击的函数之上,因此在此例中i
,在循环完成之后,您将获得AF的值2
。您希望i
将范围限定为您的点击功能
for (var i = 0; i < box.length; i++) {
(function (i) {
$(box[i] + " " + uiid[i]).click(function () {
var pid = $(this).parent().attr("aria-selected");
if(pid == "true") {
//window.open(urlfirst[i], '_blank');
//window.location.href = urlsecond[i];
alert(urlfirst[i]);
alert(urlsecond[i]);
}
});
})(i); // bring i into scope
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句