【发布时间】:2013-01-10 16:50:58
【问题描述】:
我有一个在 xajax 中实现分页的页面。每行有 3 列用于用户可以选择的单选按钮(请参阅随附的示例布局以了解)。然后当我从第 1 页选择并移动到第 2 页时,应该保留该值。如果我回到第 1 页,我可以看到我所做的选择。
我有一个代码可以处理从第 1 页到另一页的值选择。
$('.pagination_wrapper').live('click', function(){
$(document).ready(function(){
var my_option_1 $('#sel_option_1_val').val();
var my_option_2= $('#sel_option_2_val').val();
var my_option_3= $('#sel_option_3_val').val();
$('[type="radio"][name="sel_option_1_val_option"][value="'+my_option_1+'"]').attr('checked','checked');
$('[type="radio"][name="sel_option_2_val_option"][value="'+my_option_2+'"]').attr('checked','checked');
$('[type="radio"][name="sel_option_3_val_option"][value="'+my_option_3+'"]').attr('checked','checked');
});
});
现在我的问题是,当我从第 1 页移动到另一个单选按钮时,即使它在表列表中也没有被选中,因为 xajax 请求尚未完成,但 jquery 已经执行了选择。在函数中添加警报将使其正常工作,因为 dom 已经加载并且在执行此部分之前 $('[type="radio"][name="sel_option_1_val_option"][value="'+my_option_1+'"] ').attr('checked','checked');
这是带有警报的代码:
$('.pagination_wrapper').live('click', function(){
$(document).ready(function(){
var my_option_1 $('#sel_option_1_val').val();
var my_option_2= $('#sel_option_2_val').val();
var my_option_3= $('#sel_option_3_val').val();
alert('test');
$('[type="radio"][name="sel_option_1_val_option"][value="'+my_option_1+'"]').attr('checked','checked');
$('[type="radio"][name="sel_option_2_val_option"][value="'+my_option_2+'"]').attr('checked','checked');
$('[type="radio"][name="sel_option_3_val_option"][value="'+my_option_3+'"]').attr('checked','checked');
});
});
知道我需要做什么才能使单选按钮的选择只有在 xajax 请求完成后才会执行?我试过 setTimeout(), jquery.load 但还是不行。
【问题讨论】:
-
您不应该将
$( document ).ready()放入事件中。绑定代码在页面加载时运行,事件触发时页面已经加载完毕。 -
嗯,是的,我做到了,但这并不能解决问题。我现在可以让它工作了。请看我下面的回答。 :)
-
是的,抱歉,这并不是对实际问题的回答,只是一个旁注。
-
刚刚发现将xajax置于同步模式在IE中不起作用。还有其他方法可以绕过吗?
标签: jquery settimeout delayed-execution xajax