Что не так с моим кодом, когда я прокручиваю результат вниз с помощью Javascript

0

Как показано ниже, когда я перетаскиваю мышь на Week и я не могу прокрутить, чтобы увидеть окончательный <li> в блоке HTML, и это может быть не так гладко. Я не знаю, что здесь не так, пожалуйста, взгляните на него и сообщите мне, как это изменить.

Demo


HTML:

<div class="yearly">2014
<div class="container">
    <ul class="ca-menu"></ul>
</div>
</div>

Javascript:

$(document).ready(function () {
$(".yearly").mouseover(function () {
    var num_month = 48;
    var current_year = 2014;
    for (i = num_month; i >= 1; i--) {
        $(".ca-menu").after("<li class='weekly'><a href='/Lists/ChartIndex.aspx?Week=" + i + "&Year=" + current_year + "'>Week " + i + "</a></li>");
    }
})
    .mouseout(function () {
    $(".weekly").hide();
});

});
  • 3
    Я смог прокрутить вниз до последней ли ... или я не правильно понял вашу проблему
  • 1
    Я также смог увидеть последний раз ...
Показать ещё 1 комментарий
Теги:

2 ответа

2
Лучший ответ

Причина, по которой вы не можете прокручивать нижнюю часть, состоит в том, что, когда вы наводите курсор на <li>, событие mouseover неоднократно вызывается. Попробуй это

$(document).ready(function(){
            $(".yearly").hover(function () {
        console.log('yahh');
        var num_month = 48;
        var current_year = 2014;
        for (i = num_month; i >= 1; i--) {
            $(".ca-menu").after("<li class='weekly'><a href='/Lists/ChartIndex.aspx?Week=" + i + "&Year=" + current_year + "'>Week " + i + "</a></li>");
        }
    },
       function () {
        $(".weekly").hide();
    });

        });
  • 0
    Спасибо за ваш код. Это хорошо решило мою проблему :-)
1

Это связано с тем, что вы продолжаете создавать <li> когда ваша мышь перемещается.

сделайте свой <li> список за пределами мыши над функцией. Затем просто покажите и спрячьте его с соответствующим событием мыши:

$(document).ready(function () {

        var num_month = 48;
        var current_year = 2014;
        for (i = num_month; i >= 1; i--) {
            $(".ca-menu").after("<li class='weekly'><a href='/Lists/ChartIndex.aspx?Week=" + i + "&Year=" + current_year + "'>Week " + i + "</a></li>");
        }
    $(".weekly").hide();
    $(".yearly").mouseover(function () {
        $(".weekly").show();
    })
        .mouseout(function () {
        $(".weekly").hide();
    });

});

JSfiddle

  • 0
    Спасибо за ваш комментарий. Однако, кажется, что он не работает хорошо, когда я перетаскиваю мышь на Week и прокручиваю вниз, а затем ... это не сработало.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню