1

myFunc() はドキュメント スクロールにバインドされているため、頻繁に呼び出されます。HTML の選択を var に保存し、それらを関数に渡したいと思います。以下の例を実行すると、コンソール エラーが発生しますUnable to get value of the property 'css': object is null or undefined

var a1 = $('#a1');
var a2 = $('#a2');

$(document).bind("scroll", function() {
  setTimeout(myFunc, 1000, a1, a2);
}

function myFunc(a1, a2) {
  a1.css('color', 'blue');
  a2.css('font-weight', 'bold');
}

変数に格納された複数の jQuery セレクターを関数に渡すにはどうすればよいですか?

4

4 に答える 4

5
$(document).bind("scroll", function() {
  setTimeout(function() {
      myFunc(a1, a2);
    },1000);
}); // close );

function myFunc(a1, a2) {
  a1.css('color', 'blue');
  a2.css('font-weight', 'bold');
}
于 2012-09-17T16:19:23.850 に答える
2

次のことを試してください。

$(document).bind("scroll", function() {
    setTimeout(function() {
        myFunc(a1, a2);
    }, 1000);
}); // and close properly your function
于 2012-09-17T16:19:29.973 に答える
0

あなたのa1anda2変数は、要素の前に設定され、ページ上#a1#a2存在する場合があります (特に、これが onload/ready ハンドラーにラップされておらず、スクリプトがヘッダーにある場合)。スクロール イベント時に#a1とが存在することを確認するために、このように設定します。#a2

var a1 = undefined;
var a2 = undefined;

$(document).bind("scroll", function() {
  if(typeof(a1) === "undefined") { a1 = $("#a1");} //will only reset a1 if undefined
  if(typeof(a2) === "undefined") {a2 = $("#a2");}

  setTimeout(function(){myFunc(a1,a2)}, 1000);
}); //don't forget your ')'

function myFunc(a1, a2) { 
  a1.css('color', 'blue');
  a2.css('font-weight', 'bold');
}
于 2012-09-17T16:24:21.907 に答える
0

要素を配列内に格納することもできます。

jsBin デモ

var a1 = ['#a1','#a2'];

$(document).bind("scroll", function() {
    setTimeout(function() {
        myFunc(a1);
    }, 1000);
});

function myFunc(el) {
  $(el[0]).css('color', 'blue');
  $(el[1]).css('font-weight', 'bold');
}
于 2012-09-17T16:35:52.003 に答える