我已经查看了多个问题以寻找答案然而无济于事,我正在尝试从父函数获取变量并像"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/
答案 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]
检索它。在这种情况下,两个数组的索引都匹配,这使得这种替代解决方案可行。