我之前發佈過這個問題的變體,就像我認爲我已經掌握了它,它不再工作。jQuery函數在JavaScript for-loop中不起作用。請幫助
雖然我想通了,但沒有答案。當我執行這個代碼,它工作得很好:
var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1">';
for (i=0;i<=5;i++) {
for (j=0;j<3;j++) {
var $eqn = "ul.side-block-content li:eq("+i+") .article-title a span";
}
$($eqn).replaceWith($titleMarquee+$(this).text()+"</marquee>");
}
但只要我把一個事件像.mouseenter它搞砸了,並停止工作:
var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1">';
for (i=0;i<=5;i++) {
for (j=0;j<3;j++) {
var $eqn = "ul.side-block-content li:eq("+i+") .article-title a span";
}
$($eqn).mouseenter(function(){
$($eqn).replaceWith($titleMarquee+$(this).text()+"</marquee>");
});
}
還有什麼奇怪的是,我我們發現問題的一部分是當.event和.replaceWith都有一個變量時。如果我只是給.mouseenter分配一個變量,並且使用$(this)作爲.replaceWith,它可以正常工作,但是限制了我的工作。我甚至不能使用(「+ i +」)。
這是我想用腳本實現的,它不能以這種方式工作。請幫忙。
var $titleMarquee = '<marquee scrollamount="5" direction="left" width="233" align="left" behavior="alternate" loop="1">';
for (i=0;i<=5;i++) {
for (j=0;j<3;j++) {
$("ul.side-block-content li:eq("+i+")").mouseenter(function(){
$("ul.side-block-content li:eq("+i+") .article-title a span").replaceWith($titleMarquee+$(this).text()+"</marquee>");
});
}
}
我將開始與去除內循環,並與所有三個元素的單一選擇分配是mouseenver事件的思考。這就是如果我理解正確... – Dimskiy 2011-04-20 22:33:07
這是一個'選框'? o_O – Eli 2011-04-20 22:36:24
注意你在哪裏聲明和使用變量。在第三個塊中,您在事件處理程序中使用了「i」,但它更改爲6,因爲它來自外部範圍。 – pepkin88 2011-04-20 22:37:01