jQuery - 添加类后如何刷新选择器

发布于 2024-12-11 11:21:42 字数 698 浏览 0 评论 0原文

我在 jsfiddle 中做了这个例子来演示我的问题: http://jsfiddle.net/paulmason411/7E6vG/< /a>

查看如何添加灰色类,但当您第二次悬停时它不应用左边距。我猜测这是因为 $('.block.grey') 选择器是在添加 grey 类之前声明的。

无论如何,我可以让 $('.block.grey') 选择器在添加类后重新解析 dom 吗?

任何帮助都会很棒,干杯!

编辑: 我有一个更复杂的示例

$('.accordion h3').not('.ui-state-active').find('a').live('hover', function(){

,其中动态添加 ui-state-active 类。 bitsMix 指出这段代码正在使 a 生效。所以我已经将其更新为

$('.accordion h3').live('hover', function(){
  $(this).not('.ui-state-active').find('a').stop().animate({

并且有效!谢谢你们!

I've made this example in jsfiddle to demonstrate my problem: http://jsfiddle.net/paulmason411/7E6vG/

See how the grey class is added and yet it doesn't apply the left margin when u hover a second time. I'm guessing this is because the $('.block.grey') selector is declared before the class is grey class is added.

Is there anyway I can get the $('.block.grey') selector to re-parse the dom after the class is added?

Any help would be great, cheers!

EDIT:
I have a more complicated example

$('.accordion h3').not('.ui-state-active').find('a').live('hover', function(){

Where the ui-state-active class is added dynamically. bitsMix has pointed out that this code is making the a live. So I've updated it to

$('.accordion h3').live('hover', function(){
  $(this).not('.ui-state-active').find('a').stop().animate({

and it works! Thanks guys!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

不一样的天空 2024-12-18 11:21:42

您需要将 live 添加到如下所示:

$('.block.grey').live( "hover",function(){
    $(this).css('margin-left', '10px');    
});

fiddle

you need to add live to the like this:

$('.block.grey').live( "hover",function(){
    $(this).css('margin-left', '10px');    
});

fiddle

撑一把青伞 2024-12-18 11:21:42
$('.grey').live('hover',function(){
    $(this).css('margin-left', '100px');    
});

http://jsfiddle.net/bitsmix/7E6vG/2/ 现场演示:)

$('.grey').live('hover',function(){
    $(this).css('margin-left', '100px');    
});

http://jsfiddle.net/bitsmix/7E6vG/2/ live demo :)

匿名。 2024-12-18 11:21:42

它来了:

$('.block').hover(function(){
    $(this).css('background-color', '#CCC'); 
    $(this).addClass('grey');
});

$('.block.grey').live('hover',function(){
    $(this).css('margin-left', '10px');    
});

jQuery Live

Here it comes:

$('.block').hover(function(){
    $(this).css('background-color', '#CCC'); 
    $(this).addClass('grey');
});

$('.block.grey').live('hover',function(){
    $(this).css('margin-left', '10px');    
});

jQuery Live

拒绝两难 2024-12-18 11:21:42

您可以使用 .live()

$('.block.grey').live('hover', function() {
    $(this).css('margin-left', '10px');    
});

http://jsfiddle.net/7E6vG/1/

You can use .live()

$('.block.grey').live('hover', function() {
    $(this).css('margin-left', '10px');    
});

http://jsfiddle.net/7E6vG/1/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文