[英]How to solve window load event issue in jquery?
我在我的项目中使用了$(window).load
,当我的页面第一次加载时,它工作正常。 但是当我的页面从缓存加载或快速重新加载时,编写在$(window).load
函数内的代码不起作用。 如何解决这个问题?
window.load中的代码
$(window).load(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:''; ?>';
if (selectedfacode > 0) {
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
});
//also tried with
$("#facode").ajaxComplete(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:''; ?>';
if (selectedfacode > 0) {
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
}
});
你有一个逻辑错误,你比较if (selectedfacode > 0)
因为selectedfacode
被定义为一个字符串( ''
至少,如果没有从PHP服务器脚本返回的输出), String > 0
将在JavaScript中返回false
。
我建议你检查字符串的长度。
您在修复之前编码:它永远不会在#facode
选择一个值
$(window).load(function() { selectedfacode = 'br'; if (selectedfacode > 0) { alert("WILL NEVER GET HERE"); $('#facode option[value="' + selectedfacode + '"]').prop('selected', true); } console.log("Can a string be > 0 in JavaScript? Answer: " + ("a string" > 0) + ""); });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id='facode'> <option value='bl'>Blondes</option> <option value='br'>Brunettes</option> </select>
修复后的代码:检查字符串length > 0
$(window).load(function() { selectedfacode = 'br'; if (selectedfacode.length > 0) { $('#facode option[value="' + selectedfacode + '"]').prop('selected', true); } });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <select id='facode'> <option value='bl'>Blondes</option> <option value='br'>Brunettes</option> </select>
后续步骤:修复此问题后(假设在复制和粘贴到问题时不是引入错误)如果您仍然遇到满负载和缓存命中之间的问题,则可能是时间问题。 例如,如果您通过AJAX加载select
元素,您应该在尝试选择选项之前等待它加载。
改变你的技术如下,以达到你想要的。 首先设置您的变量值与您的变量值相同,但不是''字符串将其设置为0表示最小值。
$(window).load(function () {
selectedfacode = '<?php echo isset($fmvrf_info)?$fmvrf_info["facode"]:0; ?>';
});
现在你的ajax代码应该运行以获取你的数据下拉,如:
$.ajax({
type: "POST",
data: "",
url: "urlhere",
success: function(result){
//set your result as option list of your drop down as u explained above in comments.
//here main work is call to a function which make an option selected as per the value you set in variable.
setSelectedOpt();
}
});
这里的setSelectedOpt函数将根据您的变量值从选项列表中选择一个选项。
function setSelectedOpt(){
//put if condition inside this function like:
if( typeof selectedfacode !== 'undefined' && selectedfacode>0)
{
$('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
selectedfacode = 0;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.