【发布时间】:2011-11-02 15:02:18
【问题描述】:
我阅读了页面上的所有<li>,通过Ajax 向其他页面提交请求。都很好。
我遇到的唯一问题是在请求返回后更新<li>。在$.get、$li 或$(this) 之外是当前的<li>。在$.get 内,$li 始终是页面上的最后一个<li>,这是我的问题。
//For each <li>
$('ul#clients li').each(function(index) {
$li = $(this);
$li.append('This is ok');
//Update Data via Ajax
$.get("/ajax-update.php", function(data) { $li.append('This is not OK!'); });
}
【问题讨论】:
-
这是一个范围问题 -
$li未在您的匿名函数的范围内定义... -
nitpick: 把你的选择器改成#clients li,ID前的ul是不必要的
-
jbabey - 如果 javascript 在不同的页面上共享(有时是这种情况),那么如果您在另一个页面上有另一个带有 id=clients 的元素,如果您这样做,它可能会导致问题。加上这样做的好习惯,彻底没有错。
-
@ThomasClayson 彻底有问题,那就是性能损失。事实上,只要考虑性能,最好的写法是
$('#clients').find('li')。 -
Akkuma 在
$('ul#clients')和$('#clients')之间是否存在性能损失。我原以为将选择器缩小到仅uls 会提高性能?
标签: javascript jquery closures