2011-12-30 57 views
0

我想改变加载一组div块的CSS。下面的代码工作得很好。但是,只有在用户点击div时才会进行更改。如何在不需要用户干预的情况下自动触发更改?换句话说,我应该用哪些事件来实现我的目标。jQuery事件委托以外的点击

$("body").delegate(".shortTopicInfoHolder", "click", function() 
{ 
     $(".shortTopicInfoHolder").toggleClass("shortTopicInfoHolderRTL"); 
}); 

我试图使用委托来确保更改仍然存在。当文档准备就绪时,已尝试直接切换类,但对于更改后创建的div块不起作用。

回答

2

如果您是在页面加载时使用它,为什么不使用$(document).ready()?这就是所谓的DOM加载完成:

$(document).ready(function() { 
    $(".shortTopicInfoHolder").toggleClass("shortTopicInfoHolderRTL"); 
}); 
+0

它的鼻涕保证未来的变化之后的单击事件。我必须使用委托或实况 – 2011-12-30 21:50:49

+0

您仍然会使用相同的准备好的回调来初始切换类,但也可以使用委托函数以确保所有其他具有该类的div绑定到toggleClass回调...但是,你必须做一些额外的工作,以确保被添加的新div与现有div有相同的状态 – 2011-12-30 22:07:20

0

像灵光提到的,你可以使用ready callback,或者如果你正在寻找一个定时事件,那么你可以使用:

$(function() { 
    setTimeout(function() { 
     $(".shortTopicInfoHolder").toggleClass("shortTopicInfoHolderRTL"); 
     $("body").delegate(".shortTopicInfoHolder", "click", function() { 
      $(".shortTopicInfoHolder").toggleClass("shortTopicInfoHolderRTL"); 
     }); 
    }); 
}); 
0

正如其他答案所述,就绪代码将正确地获得初始负载设置。

如果将来会有更多负载出现,您可能需要修改回调函数以触发类切换。

没有DOM更改事件。

+1

有'DOMActivate','DOMFocusIn','DOMFocusOut','DOMAttrModified','DOMCharacterDataModified' ,'DOMNodeInserted','DOMNodeInsertedIntoDocument','DOMNodeRemoved','DOMNodeRemovedFromDocument','DOMSubtreeModified','DOMContentLoaded'但是如果你需要IE – Esailija 2011-12-30 22:21:50

0

触发代表团

$("body").delegate(".shortTopicInfoHolder", "click", function() 
{ 
     $(".shortTopicInfoHolder").toggleClass("shortTopicInfoHolderRTL"); 
}); 
$('.shortTopicInfoHolder').trigger('click');