jQuery inArray проблема с сочетанием с each () - PullRequest
0 голосов
/ 07 декабря 2011

Я создаю плагин, у которого есть опция, в которой пользователь может указать, какой элемент должен быть правым (по умолчанию слева), идея заключается в меню, в котором есть опция, которую пользователь может сказать, первое подменю и третье подменю должно всплывать вправо, но я не могу заставить его работать, если я добавляю одно значение, оно работает, но как только я добавляю больше значений, оно не работает.

// параметры плагина

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++;
});

Ответы [ 2 ]

2 голосов
/ 07 декабря 2011

Похоже, вы хотите использовать opt вместо o?

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

Кроме того, измените сравнение на !==, так как я предполагаю, что вы хотите добавить класс, если он всплывает справа?

Пример - http://jsfiddle.net/infernalbadger/JL7zx/

1 голос
/ 07 декабря 2011

Вам не нужен дополнительный индекс, и вы сравниваете 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/

...