【问题标题】:jQuery Mobile loop not workingjQuery Mobile 循环不起作用
【发布时间】:2013-07-15 16:23:06
【问题描述】:

这里是a jsfiddle的问题。

在这两种情况下,点击“Lizard”都应该show a picture of a lizard

分别用 1 和 6 替换 "+ entries[index] +" 时,一切正常。使用循环执行此操作时,它不再起作用。

我不知道为什么。

【问题讨论】:

  • 立即修复:jsfiddle.net/7KnZd/1。当事件处理程序被执行时(当发生click 事件时),循环已经完成......这意味着index 指的是循环中的最后一项,所以处​​理程序中的entries[index] 不会指代达到您的期望。我的示例通过创建一个新范围(调用handleItem)来捕获index 的值,以便处理程序内对index 的所有引用都将成为循环中的特定点
  • @Ian 谢谢!我会花很长时间弄清楚这一点。

标签: javascript jquery ajax loops mobile


【解决方案1】:

您的错误是您希望entries[i]clickevent 中有一个值。

$("#"+ entries[1] +"-choice-C").bind("click", function() {
    $("#"+ entries[1] +"-lizard").show();
});

点击时entries[i]的值为undefined,因为i的值为2(与数组长度相同)。

你需要一个closure来保持i的值,这里是一个例子:

var items = ["a","b", "c"];
var displayItem = function (i) {
    window.setTimeout(function () {
        alert(items[i]);
    }, 100);
}

for (var i = 0; i < items.length; i++) {
    displayItem(i);
}

对于解决您的问题的代码,请访问@Ian 评论的feedle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多