3

私は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であることを示しています
  • id my form は明らかに、スクリプトをそのフォーム内のイベントに関連付けます (名前空間?)
  • .change は、リッスンするトリガーのようです ... #myform 内で行われる変更はありますか? #myform 内で変更が発生するたびに、これが実行されますか? 効率悪そうです
  • function() 匿名または空の関数が何をするのかまだわかりません。{} に含まれるものを関数として定義するだけですか?

私の目標:次のようなものを持つことができるようにする

function myfunction()
{
if ($('#sv_I4b').attr('checked')||$('#sv_I4c').attr('checked')){
        $('#sv_I5').removeClass('hidden');
    } else {
        $('#sv_I5').addClass('hidden');
    }
}

その後

$(function() {myfunction});

そのため、ページの読み込み時にその関数を呼び出すことができますが、.change 構文が提供する機能を失いたくありません (ユーザーがページ上の要素を操作すると変更されることも.

一般的で厄介なレベルの無知に対する謝罪

4

2 に答える 2

2

関数を正しく定義する方法はわかりました — つまり、

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.

ただし、この 2 行目は、スクリプトの実行時にフォームが存在しない限り、ページが読み込まれるまで実際には機能しないため、次のように変更することをお勧めします。

$(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.
});
于 2012-11-23T00:49:26.417 に答える
1
  • $はjQueryの簡略表記であり、基本的にすべての関数を jQuery フレームワークに名前空間化します。
  • my_form は DOM セレクターです。$('#my_form') は、一致した DOM 要素を jQuery オブジェクトとしてラップし、あらゆる種類の便利なメソッドとプロパティを追加します。
  • .change()は、ご想像のとおり、その jQuery オブジェクトの変更イベントを監視するイベント リスナーです。少し非効率的です -代わりに.on()を見てください。
  • 匿名関数 (クロージャ) の最も有用な動作は、プライベート スコープを作成することです。これは、javascript が提供しないものです。
于 2012-11-23T01:11:22.473 に答える