How can I get the index of this element with jQuer

2019-04-09 08:07发布

I am trying to get the index of an element using jQuery to send to a PHP script.

Here is my XHTML

<form action="/accreditation/questions/" method="post" id="questions-form">
  <fieldset id="question-0">
    <legend>Question</legend>
    <h3>What colour is grass?</h3>    
    <ul>
      <li>
        <input type="radio" name="answer[0]" value="0" id="radio-0-0" />
        <label for="radio-0-0">Green</label>
      </li>
      <li>
        <input type="radio" name="answer[0]" value="1" id="radio-0-1" />
        <label for="radio-0-1">Red</label>
      </li>
      <li>
        <input type="radio" name="answer[0]" value="2" id="radio-0-2" />
        <label for="radio-0-2">Orange</label>
      </li>
    </ul>
  </fieldset>
  <fieldset id="question-1">
    <legend>Question</legend>
    <h3>how old is alex</h3>    
    <ul>
      <li>
        <input type="radio" name="answer[1]" value="0" id="radio-1-0" />
        <label for="radio-1-0">21</label>
      </li>
      <li>
        <input type="radio" name="answer[1]" value="1" id="radio-1-1" />
        <label for="radio-1-1">11</label>
      </li>
      <li>
        <input type="radio" name="answer[1]" value="2" id="radio-1-2" />
        <label for="radio-1-2">23</label>
      </li>
    </ul>
  </fieldset>
</form>

I need to get the index of the fieldset elements. I am currently using this each iterator (which I'd like not to change because it has a lot of other functions inside it).

$('#questions-form ul li').each(function() {
    qIndex = $('fieldset').index($('fieldset', $(this).parent()))
});

I'd like qIndex to be the index of fieldset relative to the form. For example, in this case I should have it equal to 0 and 1 (although there would be 6 values because it's looping through the list elements).

I have played around for a while and have been unable to get the correct index. I keep getting not found (-1).

If it helps, here is the code I'm using to get the list item's index relative to it's containing ul element.

index = $('li', $(this).parent()).index(this);

What is wrong with my fieldset index grabbing code?

2条回答
爱情/是我丢掉的垃圾
2楼-- · 2019-04-09 08:34

The LI's parent is UL, not the fieldset.
I think this will set qIndex for you:

qIndex = $('fieldset').index($(this).parents('fieldset'));
查看更多
迷人小祖宗
3楼-- · 2019-04-09 08:43

You can also get the index using:

$("form fieldset").each(function(I) { 
    console.log("fieldset index"+ I);
});
查看更多
登录 后发表回答