在 .each() 中使用带参数的函数

Use function with arguments within .each()

我想对参数中的不同列表使用单个函数。

像这样的语句 $( ".animals li" ).each(color); 有效。 但是,当我尝试传递参数时,即使为空,也不起作用 $( ".animals li" ).each(color());

在我的例子中,我想获得函数,它改变奇数元素的颜色(颜色不同)。 有什么办法吗?

<ul class="animals">
            <li>cat</li>
            <li>hamster</li>
            <li>dog</li>
            <li>racoon</li>
            <li>rat</li>
</ul>

<ul class="plant">
            <li>pine</li>
            <li>oak</li>
            <li>fir</li>
            <li>birch</li>
            <li>palm </li>
</ul>

$( document ).ready(function(){
      $( ".animals li" ).each(color(ind, el, "green"));
    $( ".plant li" ).each(color(ind, el, "red"));
    
    
  function color( index, element, text_color ) { 
        if( index % 2 != 0 ) { 
          $( this ).css( "color", text_color ); 
        }
      }
});

https://jsfiddle.net/Nata_Hamster/sp4k2wat/

你不能这样传递参数。您需要像这样传递它:

$( ".animals li" ).each((ind, el) => color(ind, el, "green"));

那就行了。但是,您需要修复颜色函数以不使用 'this':

function color( index, element, text_color ) { 
        if( index % 2 != 0 ) { 
          $( element ).css( "color", text_color ); 
        }
      }