如何将此javascript转换为函数?它已经是一个函数了吗?关于js结构的几个非常基本的问题
我正在学习javascript,并尝试调整以下内容:如何将此javascript转换为函数?它已经是一个函数了吗?关于js结构的几个非常基本的问题,javascript,jquery,function,Javascript,Jquery,Function,我正在学习javascript,并尝试调整以下内容: $('#myform').change(function() { if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){ $('#sv_I5').removeClass('hidden'); } else { $('#sv_I5').addClass('hidden'); } }); 作为一个具有名称的函数,我可
$('#myform').change(function() {
if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){
$('#sv_I5').removeClass('hidden');
} else {
$('#sv_I5').addClass('hidden');
}
});
作为一个具有名称的函数,我可以在不同的事件上调用它,例如页面加载等
我还没有完全理解每个元素,但我知道:
if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){
$('#sv_I5').removeClass('hidden');
} else {
$('#sv_I5').addClass('hidden');
}
是函数的核心“逻辑:if(condition){then this}else{that}
或多或少地了解那里发生了什么。剩下的是绑定javascript(还有比这更好的术语吗?)
$('#myform').change(function(){…})代码>
我的问题(以下是否正确等):
- 我认为美元表示它是jQuery
- 身份证显然是我的表格
将脚本与该表单(名称空间?)中的事件关联
- 似乎是,一个听。。。有什么变化吗
在我的表格里?所以每次我的身体发生变化时
跑?这似乎效率低下
- 函数()我还不明白是什么
匿名函数或空函数只定义所包含的内容
在{}中作为函数
我的目标是:能够拥有
function myfunction()
{
if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){
$('#sv_I5').removeClass('hidden');
} else {
$('#sv_I5').addClass('hidden');
}
}
然后
$(function() {myfunction});
因此,我可以在页面加载时调用该函数,但我不想失去.change语法为我提供的功能(它也随着用户与页面上的元素交互而改变)
为普遍而繁琐的无知道歉您猜到了如何正确定义函数-即
function myfunction()
{
if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){
$('#sv_I5').removeClass('hidden');
} else {
$('#sv_I5').addClass('hidden');
}
}
工作正常。但是,以下内容:
$(function() {myfunction});
应写为:
$(myfunction); // Run on page load.
$('#myform').change(myfunction); // ...and also run it when the form changes.
但是,除非脚本运行时表单存在,否则在加载页面之前,第二行实际上不会工作,因此您可能希望将其更改为:
$(function() { // On page load, run this anonymous function:
myfunction(); // Run the function now (where now, at this point, is page load).
$('#myform').change(myfunction); // ...as well as when the form changes.
});
- $是jQuery的简写符号,本质上为jQuery框架的任何函数命名
- my#form是一个DOM选择器。$(“#my#form”)将匹配的DOM元素包装为一个jQuery对象,添加各种有用的方法和属性
- .change()是一个事件监听器,正如您所猜测的那样,它监视jQuery对象上的更改事件。这有点低效-请查看.on()
- 匿名函数(闭包)最有用的行为是创建私有作用域,这是javascript不提供的
你似乎对每件事都很了解,要调用或调用(实际上都是同一件事)你的函数myfunction
,你需要编写myfunction()
。也就是说,myfunction
引用函数,()
调用它。空函数是不执行任何操作的函数(调用它仍然需要一点时间)。匿名函数是一个您没有给它命名的函数,它要么被指定为变量(用作引用),要么在定义之后立即调用(()
)不要将attr
用于checked
属性…感谢您的精彩解释-后续:每次表单发生任何更改时是否都会触发函数?如果是大表单(我的是)将会有很多变化,而我的函数只与几个元素相关。这是一个糟糕的形式吗?@Gideon:它可能会足够快。这是一个检查复选框是否被选中的快速测试(没有双关语)添加和删除类也很快。我不会为这么小的事情担心性能。@Bergi:我觉得引入一个不相关的更改(因为我没有编写代码;它在最初的问题中,与它们的问题无关)会让我的答案变得混乱。感谢这些解释,真的很有帮助。