【问题标题】:jQuery inArray issue with combination with a each()与 each() 组合的 jQuery inArray 问题
【发布时间】:2011-12-07 14:09:54
【问题描述】:

我正在构建一个插件,它有一个选项,用户可以设置哪个元素应该向右(默认为左),这个想法是一个菜单,它有一个用户可以说的选项,第一个子菜单和第三个子菜单应该向右浮动,但我似乎无法让它工作,如果我添加一个值它可以工作,但是一旦我添加更多值它就不起作用了。

// 插件选项

var defaults = {
    floatRight:      [1,5,6,9]
}
var opt = jQuery.extend(defaults, o);

// 循环

var i = 0
$('li').each(function(){
   if((jQuery.inArray(i, o.floatRight)) == '-1'){
      // add class...
   }
  i++;
});

【问题讨论】:

  • “不起作用”怎么办?举一个完整的例子,包括你的意见和具体发生了什么。
  • 使用 each 时传递给回调函数的第一个参数是当前索引,因此您不需要有自己的 i 来递增。

标签: jquery arrays each


【解决方案1】:

您似乎想使用opt 而不是o

$('li').each(function(i){
   if((jQuery.inArray(i, opt.floatRight)) !== -1){
      // add class...
   }
});

另外,将比较更改为!==,因为我假设您想添加浮动在右侧的类?

示例 - http://jsfiddle.net/infernalbadger/JL7zx/

【讨论】:

  • 对不起,我输入得太快了,但是 o = opt ;-),是的,现在可以了,谢谢!
【解决方案2】:

您不需要额外的索引,而是将int 索引与字符串'-1' 进行比较。

var defaults = {
    floatRight: [1,5,6,9]
}

$('li').each(function(index){
   if((jQuery.inArray(index, defaults.floatRight)) == -1){
      $(this).addClass('float');
   }
});

代码:http://jsfiddle.net/mtA4A/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-28
    • 2011-01-07
    • 2011-05-22
    • 2011-11-26
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    相关资源
    最近更新 更多