0

すべてリスト要素を含む一連のdivがあります。リスト内のアイテムのインデックスをdiv内でローカルに返そうとしています。しかし、それは他のdivのリスト項目をカウントするので、それを避けたいと思います。

したがって、現在、返されるインデックスは次のとおりです(カンマはdivを分離します):

0-5、6-7、8-17

私はそれを返したいです:

0-5、0-1、0-9

したがって、インデックス付けを各divに相対的なものにしたいと思います。

http://jsfiddle.net/K4b8J/1/

JS:

var preview = "<div class=\"preview\"><p>Test.</p></div>";
        $(".category_list.grid > ul li").click(function () {
            // calculate how many elements fit per line
            var index = $(".category_list.grid li").index(this);
            alert(index);
        });

HTML:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js" type="text/javascript"></script>
<div class="category_list grid">
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>
<div class="category_list grid">
    <ul>
        <li></li>
        <li></li>
    </ul>
</div>
<div class="category_list grid">
    <ul>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
        <li></li>
    </ul>
</div>

CSS:

*{padding:0;margin:0}
.preview {clear:both;}
ul {clear:both;}
li {
  width: 5em;
  height: 3em;
  background: black;
    display: inline-block;
    text-align: left;
    margin: 1em;
    color: white;
}
.category_list {margin-bottom:2em; clear:both;}
4

1 に答える 1

2

したがって、兄弟を基準にして要素をカウントするだけです。

var index = $(this).siblings().andSelf().index(this);

http://jsfiddle.net/mattball/K8Q5D/

そしてそれが十分に滑らかでない場合:

var index = $(this).prevAll().length;

...結局のところ、要素の(ゼロベースの)インデックスは、単にその前にある要素の数だからです。

http://jsfiddle.net/mattball/MRPrZ/

于 2013-02-22T04:07:07.157 に答える