Jquery函数调用序列
我是Jquery的新手,在一本书中看到了这段代码。 我试图了解hideCode()是如何执行的 这是我对即将发生的事件顺序的理解:Jquery函数调用序列,jquery,Jquery,我是Jquery的新手,在一本书中看到了这段代码。 我试图了解hideCode()是如何执行的 这是我对即将发生的事件顺序的理解: 文档被加载并准备好执行jquery函数 单击“猜测”框后,运行checkForCode()函数 函数运行 这是正确的吗 $(document).ready(function() { $(".guess_box").click(checkForCode); function getRandom(num) { var my_num = Math
$(document).ready(function() {
$(".guess_box").click(checkForCode);
function getRandom(num) {
var my_num = Math.floor(Math.random() * num);
return my_num;
}
var hideCode = function() {
var numRand = getRandom(4);
$(".guess_box").each(function(index, value) {
if(numRand == index){
$(this).append("<span id='has_discount'></span>");
return false;
}
});
}
hideCode();
function checkForCode() {
var discount;
if($.contains(this, document.getElementById("has_discount"))) {
var my_num = getRandom(5);
discount = "<p>Your Discount is " + my_num + "%</p>";
} else {
discount = "<p>Sorry, no discount this time!</p>" ;
}
$(this).append(discount);
$(".guess_box").each(function() {
$(this).unbind('click');
});
$(文档).ready(函数(){
$(“.guess_box”)。单击(checkForCode);
函数getRandom(num){
var my_num=Math.floor(Math.random()*num);
返回我的号码;
}
var hideCode=函数(){
var numRand=getRandom(4);
$(“.guess_box”)。每个(函数(索引,值){
if(numRand==索引){
$(此)。追加(“”);
返回false;
}
});
}
隐藏代码();
函数checkForCode(){
var贴现;
if($.contains(这个document.getElementById(“has_折扣”)){
var my_num=getRandom(5);
折扣=“您的折扣是“+my_num+”%”;
}否则{
折扣=“对不起,这次不打折!”;
}
美元(本)。追加(折扣);
$(“.guess_box”)。每个(函数(){
$(this.unbind('click');
});
除非我们没有看到更多的代码,否则当页面加载时,hideCode
只被调用一次。checkForCode
在单击guess\u框之前不会运行。顺序是:
文档被加载
checkForCode
绑定到guess\u box
的单击事件,但它尚未运行
hideCode
运行
IMHO,在中间行中添加alert/console.debug并查看它们的执行顺序。这将有助于您理解执行顺序。您的代码很难用1个空格缩进来阅读。我建议您使用4个空格。在单击之前调用hideCode。您能稍微修剪一下代码吗?我认为我们不需要所有这些信息。h将对document.ready调用ideCode,因为它不在任何其他函数中。$(this).append(“”);和$(this).append(折扣);为什么第一个append不可见,而第二个append可见。可能是因为其中没有任何内容。请尝试$(this).append(“这是一些文本”)
相反。此外,如果guess_box元素少于5个,numRand==index
可能永远不会为真。