我的以下方式无效。还有其他方法可以只触发一次就绪事件吗?谢谢
$("#id").one("ready", function (){
// do somthing
});
答案 0 :(得分:2)
我真的建议您阅读jQuery文档,因为我确信您会找到其他解决问题的方法。准备好文档并非出于此目的。
答案 1 :(得分:0)
如果您想在文档准备好后使用 #id做某事,则必须执行以下操作:
<input type="txt" id="give_lang"></br>
<button onclick='lngtype()'>Language</button>
<div id="lang_her">0</div>
<script type="text/javascript">
function lngtype(text) {
var text = document.getElementById("give_lang").value.replace(/\s/g); //read input value, and remove "space" by replace \s
//Dictionary for Unicode range of the languages
var langdic = {
"arabic" : /[\u0600-\u06FF]/,
"persian" : /[\u0750-\u077F]/,
"Hebrew" : /[\u0590-\u05FF]/,
"Syriac" : /[\u0700-\u074F]/,
"Bengali" : /[\u0980-\u09FF]/,
"Ethiopic" : /[\u1200-\u137F]/,
"Greek and Coptic" : /[\u0370-\u03FF]/,
"Georgian" : /[\u10A0-\u10FF]/,
"Thai" : /[\u0E00-\u0E7F]/,
"english" : /^[a-zA-Z]+$/
//add other languages her
}
//const keys = Object.keys(langdic); //read keys
//const keys = Object.values(langdic); //read values
const keys = Object.entries(langdic); // read keys and values from the dictionary
Object.entries(langdic).forEach(([key, value]) => { // loop to read all the dictionary items if not true
if (value.test(text) == true){ //Check Unicode to see which one is true
return document.getElementById("lang_her").innerHTML = key; //print language name if unicode true
}
});
}
</script>
您的代码中应仅包含$(function() {
// do something
$('#id').css('background', 'red);
// do other things
});
函数,并且应将所有jQuery代码括起来。
如上所述,请阅读文档,您不会浪费时间。
答案 2 :(得分:0)
我将总结这些概念:
js文件必须只有一个$(document).ready()函数,因为此函数仅用于确保其中的代码仅在“文档准备就绪”(文档对象模型(DOM)准备好执行JavaScript代码-jQuery文档)。这意味着,一旦所有HTML加载完毕,您的js就将运行。
好吧,知道您可以在文档中编写聚焦函数以确保其正常工作后,就可以了。
看我做过的这个例子:https://jsfiddle.net/hf60asgo/1/
我们有HTML(DOM):
<input id="inputTest" placeholder="Test"/>
<span id="spanTest">Write something</span>
和JavaScript(jQuery):
$(document).ready(function(){
$("#inputTest").focus(function() {
$("#spanTest").fadeOut(1000);
});
});
在文档准备就绪(输入和跨度已加载)之后,jQuery代码将运行,但前提是您将输入聚焦(单击)。
希望我能给你一些启发。