すばらしい JS を書こうとしているときに、奇妙な JS の動作に遭遇しました。問題を示すコードを作成しました。
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(function() {
var images = $('.images').children();
var filtered = images.filter(function(i, image) {
console.log(this);
}, "abc");
});
</script>
</head>
<body>
<div class="options">
<div class="filters">
</div>
<ol class="pagination">
</ol>
</div>
<div class="results">
<ul class="images">
<li data-category="Zakelijk">Result 1</li>
<li data-category="Speels">Result 2</li>
<li data-category="Blogging">Result 3</li>
<li data-category="Zakelijk">Result 4</li>
<li data-category="Speels">Result 5</li>
<li data-category="Blogging">Result 6</li>
<li data-category="Zakelijk">Result 7</li>
<li data-category="Speels">Result 8</li>
<li data-category="Blogging">Result 9</li>
<li data-category="Zakelijk">Result 10</li>
<li data-category="Speels">Result 11</li>
<li data-category="Blogging">Result 12</li>
<li data-category="Zakelijk">Result 13</li>
<li data-category="Speels">Result 14</li>
<li data-category="Blogging">Result 15</li>
</ul>
</div>
</body>
</html>
さて、私の質問です。Array.filter メソッドを使用する場合、最初のパラメーターとしてコールバック関数を渡し、2 番目のパラメーターとしてオプションのコンテキストを渡します。ご覧のとおり、"abc" をコンテキストとして渡しています (これはもちろんばかげています)。コンソールが多くの「abc」をスローすることを期待しますが、代わりに jQuery 要素を出力します!
誰かがこれに光を当てることができますか?
ありがとう、
マルティン