有没有jQuery等效于做以下操作:
$(document).ready(function() {
一个元素:
$(a).ready(function() {
我在更新面板中有内容,我在一些锚点元素上调用jQuery UI的.button().在更新面板刷新之后,锚点会重新投放,并丢失UI样式.
我已经知道如何使用.NET AJAX的add_endrequest(handler)来检测一个ajax请求的结束,但是希望使用jQuery.delegate来获得更好的解决方案.
例如
$('body').delegate('#mybutton','load',(function(){ //this doesnt work... }
解决方法
如果我正确地了解您的要求,那么这样做的一个方法是使用
Live Query插件.
Live Query … has the ability to fire
a function (callback) when it matches
a new element and another function
(callback) for when an element is no
longer matched
例如:
$('#someRegion a').livequery( function(){ do_something(); });
更新:由于DOM更改不通过jQuery运行,不幸的是,livequery不会看到它们.我在此问题上研究了这个问题,并在this answer年考虑了一个基于投票的解决方案.
更新:轮询是一种丑陋,但如果真的没有别的选择,这里是一个基于轮询的解决方案,它使用jQuery“虚拟”操作来使活动查询“查看”更改.你只想把这样的东西当作最后的手段 – 如果没有选择绑定回调方法.
首先,设置观察容器的livequery,该容器将发生更新:
$('div#container').livequery( function(){ $(this).css('color','red'); // do something });
然后使用setInterval(),这里包含一个方便的功能:
function pollUpdate( $el,freq ){ setInterval( function(){ $el.toggleClass('dummy'); },freq); };
所以你可以有:
$(document).ready( function(){ pollUpdate( $('div#container'),500 ); });
这是一个working example.点击按钮添加没有jQuery的新的DOM元素,你会看到它们被最终拾取(最终)并通过livequery重新定义.不漂亮,但它确实有效.