2011-05-20 128 views
2

我正在创建一个自动提示框,其中有建议返回给它,并且我正在尝试向各个链接添加/删除类“searchsuggestinnerulhighlight”。这里是动态返回TA动态添加/删除类Jquery

<DIV id="searchsuggestinner"> 
    <UL id=searchsuggestinnerul> 
    <LI> 
    <A href="#" id="1" class = "hoverme" onMouseDown="searchsuggestSubmit('appalachian trail');">appalachian trail</A> 
    </LI> 
    </UL> 
    </DIV> 

这里是我的jQuery:

$(".hoverme").live("mouseover mouseout", function(event) { 
    if (event.type == "mouseover") { 
     $("#" + mocount).removeClass("searchsuggestinnerulhighlight"); 
     mocount = $(this).attr('id'); 
     $("#" + mocount).addClass("searchsuggestinnerulhighlight"); 
    } else { 
     $("#" + mocount).removeClass("searchsuggestinnerulhighlight"); 
    } 
}); 

我原本的CSS(“背景色” ......现在我已经改变了它添加类并删除类,它不工作的任何想法

回答

5

更改:?

$("#" + mocount).add("searchsuggestinnerulhighlight"); 

要:

$("#" + mocount).addClass("searchsuggestinnerulhighlight"); 
+0

对不起,这是我的一个错字。我改变了它,它仍然无法正常工作。还有其他建议吗?我认为这与如何返回是不是实际上在页面上开始.. – Adam 2011-05-20 21:28:48

+0

我会看看什么@lonesomeday张贴,他提出了一些好点。事实上,你为你的id使用整数不是犹太教,除了在HTML5中,这可能会导致问题。 – Gabe 2011-05-20 21:31:30

+0

好的。谢谢! – Adam 2011-05-20 21:32:17

3
mocount = $(this).attr('id'); 
$("#" + mocount) 

这是严重的狡猾的jQuery!

首先,您不需要attr即可获取id。你可以用this.id得到它。这远远更快。

其次,您不需要获得id以获取包含clicked元素的jQuery选择。改用$(this)

最后,正如Gabe所说,使用addClass而不是add。所以,总而言之:

$(this).addClass('searchsuggestinnerulhighlight'); 

但是,另一件事 - 使用以数字开头的ID值在HTML5之前的HTML中是不允许的。它的行为不能保证。

+0

添加是一个错字,我有addClass之前。抱歉。任何其他想法为什么它不会工作呢? – Adam 2011-05-20 21:31:12

+0

@亚当什么“不起作用”?你有任何错误?你做了我推荐的其他更改吗? – lonesomeday 2011-05-20 21:32:48

+0

由于背景未突出显示,未添加该类。我做了这个“this.id”的变化,然后提醒这个id以确保它正在工作,但它说“未定义”而不是该值,然后当我将它改回“.attr('id')”时工作。但是,我确实使用了$(this)而不是id,并且工作正常。它总体上仍然没有增加班级,虽然 \t 这里是一个链接:184.106.227.117/~srchulo/searchsuggest/test.htm – Adam 2011-05-20 21:49:56

0

我会把它放在评论中,但我不能。实现lonesomeday的变化,但是当他使用$(this).id时,尝试使用this.id作为'this'应该已经是jquery对象。 (我们不希望$($(this))。)