jQuery .each() index?

后端 未结 5 2004
盖世英雄少女心
盖世英雄少女心 2021-01-31 01:03

I am using

$(\'#list option\').each(function(){
//do stuff
});

to loop over the options in a list. I am wondering how I could get the index of

相关标签:
5条回答
  • 2021-01-31 01:17

    surprise to see that no have given this syntax.

    .each syntax with data or collection

    jQuery.each(collection, callback(indexInArray, valueOfElement));
    

    OR

    jQuery.each( jQuery('#list option'), function(indexInArray, valueOfElement){
    //your code here
    }); 
    
    0 讨论(0)
  • 2021-01-31 01:22
    $('#list option').each(function(index){
      //do stuff
      console.log(index);
    });
    

    logs the index :)

    a more detailed example is below.

    function run_each() {
    
      var $results = $(".results");
    
      $results.empty();
    
      $results.append("==================== START 1st each ====================");
      console.log("==================== START 1st each ====================");
    
      $('#my_select option').each(function(index, value) {
        $results.append("<br>");
        // log the index
        $results.append("index: " + index);
        $results.append("<br>");
        console.log("index: " + index);
        // logs the element
        // $results.append(value);  this would actually remove the element
        $results.append("<br>");
        console.log(value);
        // logs element property
        $results.append(value.innerHTML);
        $results.append("<br>");
        console.log(value.innerHTML);
        // logs element property
        $results.append(this.text);
        $results.append("<br>");
        console.log(this.text);
        // jquery
        $results.append($(this).text());
        $results.append("<br>");
        console.log($(this).text());
    
        // BEGIN just to see what would happen if nesting an .each within an .each
        $('p').each(function(index) {
          $results.append("==================== nested each");
          $results.append("<br>");
          $results.append("nested each index: " + index);
          $results.append("<br>");
          console.log(index);
        });
        // END just to see what would happen if nesting an .each within an .each
    
      });
    
      $results.append("<br>");
      $results.append("==================== START 2nd each ====================");
      console.log("");
      console.log("==================== START 2nd each ====================");
    
    
      $('ul li').each(function(index, value) {
        $results.append("<br>");
        // log the index
        $results.append("index: " + index);
        $results.append("<br>");
        console.log(index);
        // logs the element
        // $results.append(value); this would actually remove the element
        $results.append("<br>");
        console.log(value);
        // logs element property
        $results.append(value.innerHTML);
        $results.append("<br>");
        console.log(value.innerHTML);
        // logs element property
        $results.append(this.innerHTML);
        $results.append("<br>");
        console.log(this.innerHTML);
        // jquery
        $results.append($(this).text());
        $results.append("<br>");
        console.log($(this).text());
      });
    
    }
    
    
    
    $(document).on("click", ".clicker", function() {
    
      run_each();
    
    });
    .results {
      background: #000;
      height: 150px;
      overflow: auto;
      color: lime;
      font-family: arial;
      padding: 20px;
    }
    
    .container {
      display: flex;
    }
    
    .one,
    .two,
    .three {
      width: 33.3%;
    }
    
    .one {
      background: yellow;
      text-align: center;
    }
    
    .two {
      background: pink;
    }
    
    .three {
      background: darkgray;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="container">
    
      <div class="one">
        <select id="my_select">
          <option>apple</option>
          <option>orange</option>
          <option>pear</option>
        </select>
      </div>
    
      <div class="two">
        <ul id="my_list">
          <li>canada</li>
          <li>america</li>
          <li>france</li>
        </ul>
      </div>
    
      <div class="three">
        <p>do</p>
        <p>re</p>
        <p>me</p>
      </div>
    
    </div>
    
    <button class="clicker">run_each()</button>
    
    
    <div class="results">
    
    
    </div>

    0 讨论(0)
  • 2021-01-31 01:29

    From the jQuery.each() documentation:

    .each( function(index, Element) )
        function(index, Element)A function to execute for each matched element.
    

    So you'll want to use:

    $('#list option').each(function(i,e){
        //do stuff
    });
    

    ...where index will be the index and element will be the option element in list

    0 讨论(0)
  • 2021-01-31 01:30
    $('#list option').each(function(intIndex){
    //do stuff
    });
    
    0 讨论(0)
  • 2021-01-31 01:41

    jQuery takes care of this for you. The first argument to your .each() callback function is the index of the current iteration of the loop. The second being the current matched DOM element So:

    $('#list option').each(function(index, element){
      alert("Iteration: " + index)
    });
    
    0 讨论(0)
提交回复
热议问题