получить индекс текущего hovered li только для visble li - jquery hover - PullRequest
0 голосов
/ 03 февраля 2011

Есть 5 элементов li, и один из них говорит, что третий li скрыт. Есть ли способ применить фильтр до получения индекса, чтобы индекс четвертого элемента показывал 2 вместо 3.

<html>
    <head>
        <title>test</title>
        <script type='text/javascript' src='js/jquery-1.4.2.js'></script>
        <script>
            $(window).load(function() {
                    jQuery('.addchar').live('hover', function(event) {
                        $("#result").html("Index is:" +$(this).index() );
                    });
                });
            });
        </script>
    </head>
    <body>
        <div id="content">
            <div>
                <ul>
                    <li class="addchar">one </li>
                    <li class="addchar">two </li>
                    <li class="addchar" style="display:none"> three</li>
                    <li class="addchar">four </li>
                    <li class="addchar">five </li>
                </ul>
            </div>
            <div id="result"></div>
        </div>
    </body>
</html>

Ответы [ 2 ]

2 голосов
/ 03 февраля 2011

Как насчет использования видимого селектора :

$('.addchar:visible').live( ...

РЕДАКТИРОВАТЬ:

Жаль, вы можете попробовать альтернативный подход, если это вариант для вас:

$(function() {
    $('.addchar:visible').each(function(index) {
        $(this).hover(function() {
            $("#result").html("Index is: " + index);
        });
    });
});
0 голосов
/ 05 февраля 2011

Поскольку метод foreach выполняет итерацию для каждого элемента, он становился медленным, когда размер элемента увеличивался. Я искал и заставил его работать. Спасибо этой ссылке .

jQuery('.addchar').live('hover', function (event) {
var cInd = $(this).index();//current index including hidden element
var hidLen = $(this).parent().children("li:lt(" + cInd + "):not(:visible)").length;//total hidden before hovered element
var index = cInd - hidLen;
$("#result").html("Current index :" + cInd +"<br>Tot Hidden Before Current:" + hidLen+"<br> Actual Index:"+index);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...