如何解决jquery中的窗口加载事件问题?

时间:2015-10-14 12:31:30

标签: javascript 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);
    }
});

2 个答案:

答案 0 :(得分:3)

您在比较if (selectedfacode > 0)时遇到逻辑错误,因为selectedfacode被定义为字符串(如果没有从PHP服务器脚本返回的输出,则至少为'')和{{ 1}}将在JavaScript中返回String > 0

我建议您检查字符串的长度。

您在修复之前编码:它永远不会在false

中选择一个值

&#13;
&#13;
#facode
&#13;
$(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) + "");
});
&#13;
&#13;
&#13;

修复后的代码:检查字符串<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>

&#13;
&#13;
length > 0
&#13;
$(window).load(function() {
  selectedfacode = 'br';
  if (selectedfacode.length > 0) {
    $('#facode option[value="' + selectedfacode + '"]').prop('selected', true);
  }
});
&#13;
&#13;
&#13;

后续步骤:修复此问题后(假设在复制和粘贴问题时不会引入错误)如果您仍然遇到满负载和缓存命中之间存在差异的问题,则可能是时间问题。例如,如果您通过AJAX加载<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>元素,显然应该等到它被加载后再尝试选择一个选项等。

答案 1 :(得分:0)

如下所示更改您的技术以达到您想要的效果。 首先设置你的变量值与你的变量值相同,但不是''字符串将其设置为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;
    }
}