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