2

私はjQueryへの最初の進出を試みています。私は次のことを達成しようとしていますが、用語がよくわからないので、一種の C#/pseudocode 構文を使用した例で説明しようとします。

次のような(匿名の)オブジェクトがパラメーターとして必要だとします。

elemParameter {
    elemId,
    arg1,
    optionalArg2
}

これらのオブジェクトの配列/コレクションを関数に渡したい

$(document).ready(function() {
    $.myFunction(
        new { Id = "div1", Color = "blue", Animal = "dog" },
        new { Id = "div3", Color = "green" },
        new { Id = "div4", Color = "orange", Animal = "horse" }
    );
}

そして、私の関数では、次のようなコレクションの各オブジェクトにアクセスする必要があります。

(function($) {
    $.myFunction(var elemParams) {
        foreach (param in elemParams) {
            $('#' + param.Id).onclick = function() {
                this.css('background-color', param.Color);
                alert(param.Animal ?? 'no animal specified');
            }
        }
    }
}

この方法でパラメーターを渡すための正しい構文へのポインターを誰かに教えてもらえますか? または、これがJavaScriptで物事を行う正しい方法でない場合は、同じことを達成するためのより良い方法を提案してください。

4

2 に答える 2

3

あなたの構文は少しずれています。次のようになります。

$(function() {
  function myFunction() {
    $.each(arguments, function(i, arg) {
      $('#' + arg.Id).click(function() {
        $(this).css('background-color', arg.Color);
        alert(arg.Animal || 'no animal specified');
      });
    });
  }
  myFunction({ Id: "div1", Color: "blue", Animal: "dog" },
             { Id: "div3", Color: "green" },
             { Id: "div4", Color: "orange", Animal: "horse" });​
});

ここでデモを試すことができます。構文スタイルはJavaScript オブジェクト リテラル表記法と呼ばれます。これは、これに関する詳細情報を探すときにグーグルで検索しているものです:)

または、直接使用するのではなく、これらに加えて他の引数が必要な場合は、オブジェクトを配列として渡すことができますarguments

于 2010-06-28T10:59:42.477 に答える
1

「オブジェクトリテラル表記」を探しています。次のようになります。

{
    propertyName: propertyValue,
    propertyName2: propertyValue2
}

newキーワードを一緒に使用するのではなく、文字列( "foo")や数字(42)のようなリテラル構造にすぎません。同様に、配列リテラルがあります。

["one", "two", "three"]

更新された例は次のとおりです。

$(document).ready(function() {
    $.myFunction(
        // <== Start an array literal with [
        [
            // <== Colons rather than equal signs
            { Id: "div1", Color: "blue", Animal: "dog" },
            { Id: "div3", Color: "green" },
            { Id: "div4", Color: "orange", Animal: "horse" }
        // End the array literal with ]
        ]
    );
}

オブジェクトまたは配列リテラルのいずれにも末尾のコンマを含めないことが重要であることに注意してください。

["one", "two", "three", ]
                      ^--- Don't do that
{foo: "bar", x: 27, }
                  ^------- Or that

それらが有効であるかどうかの問題は不明確であり(最近の第5版の時点で明らかになっています)、IEは(少なくとも)それらを窒息させます。


トピック外ですが、通常、JavaScriptコードのプロパティ名はキャメルケース内にあり、小文字で始まります(たとえば、animalではなくAnimal)。ただし、これは純粋なスタイルです。

于 2010-06-28T10:55:02.880 に答える