0

我有一个网页,按名称显示数据馈送列表(下面的 dataFeed 变量),我试图模拟一个弹出窗口,其中包含当用户单击图标时有关数据馈送的更多信息(dataFeed + ' dataLink') 旁边的数据馈送名称。我有一个隐藏的 div (diagWindow),其中包含一个 div (diagWindowContent),其中填充了有关提要的信息。getDiagData.php 页面使用传递给它的 dataFeed 参数返回我想要显示的信息。

一开始我试过这个...

for (i = 0; i < dataFeeds.length; i++) {
    dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle();
        $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
    });
}

但这只显示了为 dataFeeds 数组中的最后一个 dataFeed 返回的页面。

然后我尝试在切换()上使用回调方法,就像这样......

for (i = 0; i < dataFeeds.length; i++) {
    dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle('fast', function(dataFeed) {
            return function() {
                $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
            }(dataFeed)
        );            
    });
}

但这似乎具有相同的结果,显示 dataFeeds 数组中最后一个数据馈送的信息。

我正在寻求帮助,以了解如何在单击数据馈送名称旁边的图标时从 getDiagData.php 页面加载适当的数据馈送信息。

谢谢你。

4

2 回答 2

3

试试这个..您没有在正确的上下文中执行它..

for (i = 0; i < dataFeeds.length; i++) {
    (function(num){
        var dataFeed = num;

        $('#' + dataFeed + 'diagLink').click(function() {
            $('#diagWindow').toggle();
            $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
         });
    })(dataFeeds[i])
}​
于 2012-11-20T18:31:34.880 回答
0

这很可能是一个变量范围问题,你可以尝试这样的事情:

for (var i = 0; i < dataFeeds.length; i++) {
    var dataFeed= dataFeeds[i];

    $('#' + dataFeed+ 'diagLink').click(function() {
        $('#diagWindow').toggle();
        $('#diagWindowContent').load('getDiagData.php?dataFeed=' + dataFeed);
    });
}

注意添加的var关键字

编辑:实际上,Sushanth 的答案是更正确的答案。我相信 Javascript 中的变量是由函数限定的,所以我上面的代码可能无法正常工作。他的遗嘱。

于 2012-11-20T18:30:38.290 回答