Вопрос о цикле JavaScript (jQuery) - PullRequest
0 голосов
/ 19 апреля 2011

Привет всем, я новичок в JavaScript и использую для этого библиотеку jQuery.В основном я пытаюсь создать кратные этой строки, и я использую ": eq (0), чтобы сделать это. Проблема в том, что: eq (0) повторяется 3 раза в коде и с циклом, который я делаюкаждый раз, когда он повторяется, у него есть другое число.

Это то, что я получаю от него, я думаю (: eq (0),: eq (1) ,: eq (2),: eq (3)) и т. д.) Мне нужно это сделать ((eq (0) ,: eq (0) ,: eq (0),: eq (1): eq (1): eq (1) и т. д.)..)

for (i = 0; i < 6; ++i) {
    var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1"><span>';
    var $lieq = "li:eq("+i+")";
    $("ul.side-block-content "+$lieq+"").mouseenter(function() {
        $("ul.side-block-content "+$lieq+" .article-title a span")
            .replaceWith($titleMarquee+$("ul.side-block-content "+$lieq+" .article-title a").text()+"</span></marquee>");
    });
}

Если кто-нибудь может дать мне знать, как правильно выполнить этот цикл, или, может быть, как воссоздать код, чтобы он делал то же самое, что было бы замечательно.

Спасибозаранее.

@ ответ Ника:

var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1"><span>';
    for (i = 0; i < 6; ++i) {
        for (j = 0; j < 7; ++j) {
        $("ul.side-block-content li:eq("+i+")").mouseenter(function(){$("ul.side-block-content li:eq("+i+") .article-title a span").replaceWith($titleMarquee+$("ul.side-block-content li:eq("+i+") .article-title a").text()+"</span></marquee>");});
        $("ul.side-block-content li:eq("+i+")").mouseleave(function(){$("ul.side-block-content li:eq("+i+") .article-title a marquee").replaceWith('<span>'+$("ul.side-block-content li:eq("+i+") .article-title a").text()+"</span>");});  
        }
    }

Это то, что я использую сейчас, и оно не работает. Я делаю это правильно?

@ Gilly3

$("ul.side-block-content li marquee").each(function() {
    this.stop();              // prevent the marquee from scrolling initially
    }).mouseenter(function() {
    this.start();             // start the scroll onmouseenter
    });

<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate">

Ответы [ 2 ]

1 голос
/ 19 апреля 2011

Похоже, что вы пытаетесь сделать <li> текстовый свиток, когда вы наводите курсор на него. Это верно?

Просто поместите код в исходный HTML-код и сделайте следующее:

$(function ()
{
    $("ul.side-block-content li marquee").each(function() {
        this.stop();              // prevent the marquee from scrolling initially
    }).mouseenter(function() {
        this.start();             // start the scroll onmouseenter
    });
});

Я также хочу отказаться от использования тега marquee, поскольку он устарел, и вместо этого использовать плагин jQuery, но последний плагин jQuery marquee, который я видел, фактически использовал <marquee> в конце концов. Итак ... пфф.

0 голосов
/ 19 апреля 2011

Вы можете встроить другой цикл for, например, так:

for (i = 0; i < 6; ++i) {
  for (j = 0; j < 3; ++j) {
    // repeat i three times, and use :eq("+i+")
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...