如何将此javascript转换为函数?它已经是一个函数了吗?关于js结构的几个非常基本的问题

如何将此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'); } }); 作为一个具有名称的函数,我可

我正在学习javascript,并尝试调整以下内容:

$('#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:我觉得引入一个不相关的更改(因为我没有编写代码;它在最初的问题中,与它们的问题无关)会让我的答案变得混乱。感谢这些解释,真的很有帮助。