簡體   English   中英

如何解決jquery中的窗口加載事件問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM