inArray()不适用于循环的第一项

时间:2012-08-09 10:17:24

标签: jquery arrays

我有一些像这样的代码,这里是最重要的部分,并不能按我的意愿工作。

<div class="somediv" data-dummy="class11">some text</div>
<div class="somediv" data-dummy="class12">some flying saucers</div>
<div class="somediv" data-dummy="class13">some crazy jpg</div>


var AllFirstCssClasses = [ 'class11', 'class12', 'class13' ];
var AllSecondCssClasses = [ 'class21', 'class22', 'class23' ];

for (var index = 0; index < $('div.somediv').length; index++){
   var firstCssClass = $('div.somediv').eq(index).attr('data-dummy');
   var index2 = $.inArray(firstCssClass, AllFirstCssClasses);
   $('div.somediv').eq(index).addClass(firstCssClass + ' ' +  AllSecondCssClasses[index2] );
}

我已经完成了一个适用于此示例的小提琴http://jsfiddle.net/FVVXx/11/,但此代码位于某个时间间隔内触发的函数内(它是一个滑块),并且它在此示例中不起作用。< / p>

在我的代码中,第一个div的结果始终为<div class="somediv class11 undefined">,其中undefined应为AllSecondCssClasses[index2] - &gt; class21

感谢您的回复:)

1 个答案:

答案 0 :(得分:1)

这是你应该用JQuery编写算法的方法。如果你能解释你想要做什么,我将能够提供更多帮助。

$(function(){
var AllFirstCssClasses = [ 'class11', 'class12', 'class13' ];
var AllSecondCssClasses = [ 'class21', 'class22', 'class23' ];

function getParallelClass( firstClass ){
    return  AllSecondCssClasses[$.inArray(firstClass, AllFirstCssClasses)];
}

$("div.somediv").each(function(index,item){
      var $myDummy = $(this).attr("data-dummy");
      $(this).addClass($myDummy).addClass(getParallelClass( $myDummy) );
});

});

这是我的JSFiddle