64

私はjQueryに少し慣れていないので、密集していることを許してください。<td>ChromeのJSコンソールを介して特定のページのすべての要素を選択したい:

$('td')

しかし、これを行うと、次の出力が得られます。

<td>Apples</td>

jQueryは<td>タグ付きの要素の配列を返すことになっているのではありませんか?この基準に一致する最初の要素のみが表示されるのはなぜですか?

問題のサイトは次のとおりです:http ://www.w3schools.com/html/html_tables.asp

編集:ChromeコンソールにjQuery関数を入力すると、jQueryオブジェクトが返されません。プレーンなHTML要素を取得します。Chromeのセットアップ/構成方法に問題があるはずです。

4

4 に答える 4

133

jQuery が Web ページに存在せず、もちろん他のコードが に何かを割り当てていない場合$、Chrome の JS コンソール$はショートカットを に割り当てdocument.querySelector()ます。

$$()コンソールによって へのショートカットが割り当てられているで、目的を達成できますdocument.querySelectorAll()

jQueryページに jQuery が含まれているかどうかを確認するには、コンソールで実行します。jQuery が に割り当てられているかどうかを知るには、その場合は jQuery バージョンを返す$を実行できます。$().jquery

また、すべての Web ページに jQuery を挿入するためのブラウザー アドオンもあります。

于 2013-01-13T22:40:44.097 に答える
17

ターゲットページで実行するためにjQueryが適切に含まれていないようです。私は同様の問題を抱えていて、GoogleChromeについて次のように解決しました。

次のワンライナーコードをURLフィールドとして含むブックマークをChromeブラウザに追加します(読みやすくするために美化されています)。

javascript: (function () {
    var s = document.createElement('script');
    s.setAttribute('src', 'https://code.jquery.com/jquery-latest.min.js');
    if (typeof jQuery == 'undefined') {
        document.getElementsByTagName('head')[0].appendChild(s);
    }
    jQuery("td.edit select option[value=BN]").attr("selected", "");
})();

次に、そのブックマークをクリックして実行します。通常はjQueryが含まれ、function (e,t){return new b.fn.init(e,t,r)}入力したときのようなものをコンソールが返すようにすることが期待されています$

ブックマーク(ブックマークレットとも呼ばれます)を作成するプロセスは、コンソールで作業するすべてのページにjQueryを挿入するための省略形です。ただし、スニペットコードは、JSコンソールに直接コピーアンドペーストした場合にも機能します。

PS:スニペットのクレジットは私のものではありません。しばらく使用していて、どこから取得したのか思い出せないからです。

それが役に立てば幸い。

于 2013-02-20T16:02:54.657 に答える
4

jQueryがインストールされていて、$シンボルがjQueryの省略形である場合$('td')、jQueryオブジェクトを返します。しかし、リンクしたw3schoolsページには、jQueryが存在することすらわかりません。

jQueryが存在し、デバッガーが$シンボルをオーバーライドしていない場合$('td')、jQueryオブジェクトを返します。jQueryオブジェクトは配列のようなオブジェクトです(配列のいくつかのプロパティがあります)が、実際の配列ではありません。コンソールで物事を見ている場合は、含まれているjQueryオブジェクトではなく、DOM要素自体を見ていることを確認する必要があります。

DOM要素の実際の配列を取得する場合は、次のように実行できます。

$('td').get();

DOM要素の配列を返します。

それでも問題が解決しない場合は、呼び出しのタイミングを調べて、必要な$('td').get()すべてのtdアイテムがページにあることを確認してから検索する必要があります。

于 2013-01-13T21:52:06.717 に答える
0

また、各 td で何かをしようとしている場合は、 a を使用し.each()てそれらをループする必要があります。例えば:

$('td').each(function() {
   //do something relevant here
});
于 2013-01-13T21:56:40.013 に答える