1

複数の関数呼び出しを処理するためのより良い方法があるかどうか疑問に思っています。基本的に、いくつかのプロパティとともに、引数の1つとして要素を受け取る関数があります。いくつかの要素でこの関数を呼び出す必要があります...

function positionMe(element,position){ ... }

positionMe(obj1,top);
positionMe(obj2,left);
positionMe(obj3,bottom);
positionMe(obj4,right);
positionMe(obj5,bottom);

コードを見るだけで、本当に間違ったことをしているように見えます。最初は、要素のコレクションを渡すことができるかもしれないと思っていましたが、うまくいかないようです。何か案は?

4

3 に答える 3

2
<script src="http://code.jquery.com/jquery-latest.js"></script>

<script>

var objArray = [
 ["obj1","top"],
 ["obj2","bottom"],
 ["obj3","middle"]
];

$.each(objArray, function(i, v) {positionMe(v[0], v[1]);});

function positionMe(element, val) {
   alert (element+":"+val);
}

</script>
于 2012-09-26T02:00:01.027 に答える
2

あなたが提供した情報を使用して、必要なすべての情報を含む配列を作成し、関数内でループします。

function positionMe(elements)
{
    for(var i = 0, numberOfElements = elements.length; i < numberOfElements ; i++) {
        // Do stuff with the objects you want to do in here

        // access the current object
        console.log(elements[i].object);

        // access the current direction
        console.log(elements[i].direction);
    }
}

var yourObjects = [
    {
        object: obj1,
        direction: 'top'
    },
    {
        object: obj2,
        direction: 'left'
    },
    {
        object: obj3,
        direction: 'bottom'
    },
    // etc
];
positionMe(yourObjects);

アップデート

リフレクティブがコメントしたように:

(var i in element) { console.log(elements[i].object);} のより良い使用

これは、JavaScript の配列には当てはまりません。それほど単純ではありません。pop()などのように、配列オブジェクトのすべての継承されたものもループすることになるためですpush()。これを防ぐ方法hasOwnProperty().

もう 1 つの方法はforEach()、JavaScript 1.6 の時点で利用可能な which を使用することでした。したがって、すべてのユーザー エージェントが既にこれをサポートしているとは思いません。

于 2012-09-26T01:55:29.347 に答える
0

オブジェクトがページ上の要素である場合は、jQueryの$ .each()関数を使用して、各イベントで関数を実行できます。構文は次のように機能します。

$('selector that grabs all objects').each(positionMe($(this), position));
于 2012-09-26T01:56:56.280 に答える