将变量传递给子函数javascript

时间:2015-01-30 21:15:06

标签: javascript

我已经查看了多个问题以寻找答案然而无济于事,我正在尝试从父函数获取变量并像"a(b)"那样传递它似乎不起作用 我不能为我的生活获得'item_classes',是否有另一种方式可以编写我的代码以使其可操作

$(document).ready(function () {
    $('.nm-more').hover(function () {
        var item_num = $(this).data('stg-id');
        var item_names = $(this).data('stg-items');
        var item_classes = $(this).data('stg-class');
            item_names.forEach(function (entry) {
            var item_index = item_classes[entry];
            alert(entry + ' ' + item_index);
        });});

    });
});

这是一个jsfiddle http://jsfiddle.net/bgzkge65/25/

1 个答案:

答案 0 :(得分:1)

问题解决了:

http://jsfiddle.net/bgzkge65/27/

$(document).ready(function () {
    $('.nm-more').click(function () {
        var item_num = $(this).data('stg-id');
        var item_names = $(this).data('stg-items');
        var item_classes = ($(this).data('stg-class'));

        item_names.forEach(function (entry) {

            var item_index = item_classes[item_names.indexOf(entry)];
            alert(entry + ' ' + item_index);
        });

    });
});

HTML更改:

            <li class="nm-more" data-stg-id="2" data-stg-items='["Mark as read", "Mark as unread", "Flag all items", "Unflag all items"]' data-stg-class='["readit", "unreadit", "flagit", "unflagit"]'>Mark all</li>
            <li class="nm-more" data-stg-id="1" data-stg-items='["Mark as read", "Mark as unread", "Flag items", "Unflag items"]' data-stg-class='["readit", "unreadit", "flagit", "unflagit"]'>Selected</li>

我做了什么:

首先:data-stg-class未格式化为数组。我重新格式化并使其成为一个数组。

代码实际上是正确的,但您使用的是命名密钥,但您需要在此处使用索引。因此entry应该是一个索引而不是data-stg-class中指定密钥的引用。所以我使用item_names.indexOf(entry)来检索正确的索引并返回正确的值。


您也可以从array.indexOf检索索引,而不是forEach。它是该函数的第二个参数,要么在函数声明中声明它,要么用arguments[1]检索它。在这种情况下,两个数组的索引都匹配,这使得这种替代解决方案可行。