jQuery promise().done()
无效。以下是我的代码:
<div id="testtesttest">gggggg</div>
<script type="text/javascript">
Event.observe(window, 'load', function() {
new Ajax.Request('testurl', {
method: 'get',
parameters: {
id: param
},
onSuccess: function() {
alert('success');
jQuery('div#testtesttest').html('teststring').promise().done(function() {
alert('afterpromise');
});
}
});
});
</script>
警告&#34;成功&#34; ,用&#34; gggggg&替换&#34; teststring&#34; #34; 但没有警告&#34; afterpromise&#34;
我正在使用jquery-1.10.2。
编辑: 原始代码
<?php if (!$this->getAttributeCode() || $this->getProduct()->getData($this->getAttributeCode())): ?>
<div id="<?php echo $this->getBlockId() ?>" class="lazyblocks-loader"> </div>
<script type="text/javascript">
Event.observe(window, 'load', function(){
new Ajax.Request('<?php echo $this->getUrl('lazyblocks/product/' . $this->getLazyAction()) ?>', {
method: 'get',
parameters: {
id: <?php echo $this->getProductId(); ?>
},
onSuccess: function(transport){
var data = transport.responseText;
var block = jQuery('#<?php echo $this->getBlockId() ?>')
block.removeClass('lazyblocks-loader');
if (data.isJSON()) {
var jsonData = data.evalJSON();
if (jsonData.html) {
block.html(jsonData.html).promise().done(function(){
block.find('img.lazy').jail({
id : 'page',
event : 'load+scroll',
loadHiddenImages: true,
offset : 10000
});
<?php echo $this->getChildHtml('lazyblocks.loader.oncomplete'); ?>
});
}
}
}
});
});
</script>
<?php endif; ?>
可能是什么问题?
答案 0 :(得分:3)
问题是你的jQuery版本。如果您使用更高版本(2.1及更高版本),它将起作用。在最新版本中,如果没有异步工作挂起,jQuery元素会创建一个已解决的promise。见
http://jsfiddle.net/fHyH7/(使用最新的jQuery)
http://jsfiddle.net/fHyH7/1/(不工作,1.10)
一些假代码,所以我可以链接到jsfiddle
// Fake code so I can link to jsfiddle