非常に単純な JSFiddle が問題を示しています(問題を示すために使用されるため、デバッグ コンソールを表示する必要がありますconsole.log
)。2 番目の console.log ステートメントは空です。el
ただし、次の行から削除すると、コードは機能します。
var items = $('li[data-level="2"]', el);
次のようになります。
var items = $('li[data-level="2"]');
その後、コードが機能します。これがなぜなのか説明できる人はいますか?行宣言el
が欠落している理由がわかりません.JSFiddleに表示されていますが、JavaScriptパネルのすべてのコードは次のとおりです。
$(document).ready(function() {
var el = $('ul');
var items = $('li[data-level="2"]', el);
console.log(items);
var visible = items.filter(':visible');
console.log(visible);
});