要设置场景,我使用的是jQuery。我在另一个回答中读到“有些库(jQuery)使用$作为主要基础对象(或函数)”。
那很好,但我很困惑的是为什么我可以拥有以下内容并且它有效:
$(document).ready(function () {
$(function showPassword () {
//Some code and it works
});
});
但是有了它,它不起作用:
$(document).ready(function () {
function showPassword () {
//Some code and it doesn't work
};
});
所以我必须创建那个'基础对象',但我真的可以用Layman的术语解释,因为这显然是基础知识的一部分。
最后的情况是这样的。我在开始时有$(function showPassword() {
,但在其中有另一个函数(function validatePwdStrength () {
。对于第二个函数,我不需要$(
并且它有效。是因为我先前设置了这个'基础对象'?
$(document).ready(function () {
$(function showPassword () {
//Some code and it works
function validatePwdStrength () {
//Some code and it works
}
});
});
注意:根据我所阅读的内容,我已经使用了几次“基础对象”这个短语,但我并不完全明白这意味着什么。我已经阅读过关于jQuery objects的内容,但这似乎表明虽然它更方便,并且在执行此操作时具有更强的兼容性,但它仍然可以在没有它的情况下工作。所以我遗漏了一些东西,或者很多东西。
答案 0 :(得分:6)
在此:
$(document).ready(function () {
$(function showPassword () {
//Some code and it works
});
});
你是 - 冗余 - 安排“showPassword”函数在浏览器构建DOM后立即执行。这是多余的,因为$(document).ready(...)
在功能上与$(...)
相同。这也可以这样做:
$(function showPassword() {
// the code
});
在此:
$(document).ready(function () {
function showPassword () {
//Some code and it doesn't work
};
});
你只是宣布那个“showPassword”功能。如果你不打电话,别的什么都没有。因此,在第二种形式中,这将起作用:
$(document).ready(function () {
function showPassword () {
//Some code and it doesn't work
};
showPassword(); // call the function
});
答案 1 :(得分:1)
$(document).ready(function () { $(function showPassword () { //Some code and it works }); });
请注意passing functions to jQuery
与hooking them on-ready相同。没理由两次这样做。
$(document).ready(function () { function showPassword () { //Some code and it doesn't work }; });
您正在声明函数showPassword
,但从不调用它。
答案 2 :(得分:0)
两者都定义了一个功能。还可以调用名为$
的函数,并将新创建的函数作为参数传递给它。
$
(在jQuery中)根据您传递的参数做了六个左右的不同事情。如果你传递一个函数,它会在DOM Ready事件触发时调用该函数(如果该事件已经触发,则会立即调用)。