【问题标题】:JavaScript (jQuery) for-loop questionJavaScript (jQuery) for 循环问题
【发布时间】:2011-04-18 23:26:40
【问题描述】:

大家好,我是 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">

【问题讨论】:

  • marqueeblink 的第一个孩子之外已被弃用。
  • @alex:嘘。我们正试图让blink 标签平静地消亡。
  • marquee 不在 HTML 中,它是基于浏览器的代码。但这与问题无关。
  • @user Here。 :)
  • 你不是已经ask this question了吗?

标签: javascript jquery for-loop


【解决方案1】:

当您将鼠标悬停在 &lt;li&gt; 文本上时,您似乎正在尝试使其滚动。对吗?

只需将选框代码放在原始 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 插件实际上是在后端使用&lt;marquee&gt;。所以……噗。

【讨论】:

  • 这是一个天才的方法!但我试过了,它最初并没有阻止它。也许我做错了?我已经用我正在做的事情更新了我的问题。
  • 确保您的代码在 domready 处理程序中运行。即$(function () { /* your code here */ });
【解决方案2】:

您可以在其中嵌入另一个 for 循环,如下所示:

for (i = 0; i < 6; ++i) {
  for (j = 0; j < 3; ++j) {
    // repeat i three times, and use :eq("+i+")
  }
}

【讨论】:

  • 您能否更具体地回答这个问题,我试过了,但对我没有任何帮助。
  • @user 可以理解为外层循环每循环一次,内层循环循环3次
  • 我根据这个答案修改了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-15
  • 1970-01-01
  • 2012-09-20
  • 2012-03-19
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
相关资源
最近更新 更多