3

主な質問: JavaScript 条件を使用してから、jQuery コードを使用することは可能ですか?

現在動作していない例を次に示します。

<script>
//<![CDATA[ 
if (location.pathname == "/SearchResults.asp" 
|| location.pathname.indexOf("-s/") != -1 
|| location.pathname.indexOf("_s/") != -1) 
$('.colors_productname span').css("background-color", "#F7F7F7");
//]]> 
</script>

JavaScript 条件は、私の e コマース プラットフォーム (Volusion) によって提供され、カテゴリ ページのみを対象としていました (jQuery は私が行っていました)。URL に "/SearchResults.asp" が含まれていない場合 (そのうちの 1 つは実際には "/Meats-s/3393.htm" です)、この JavaScript コードがまだ機能するかどうかを尋ねましたが、それでも機能するはずだと保証してくれました。

二次的な質問: 「location.pathname.indexOf」行は何をしますか?

4

5 に答える 5

12

混在させることはできますが、jQuery とネイティブ Javascript では DOM 要素の参照方法が異なることを理解することが重要です。

次のような要素を持つドキュメントがあるとします。

<span id="message_location"><span>

通常の Javascript でその要素を取得するには、次のようにします。

var spanElement = document.getElementById("message_location");

ただし、jQuery ライブラリでは、次の構文を使用します。

var $spanElement = $("#message_location");

ここで、 と は同じものではないことに注意する必要があります。1 つは DOM 要素で、もう 1 つは 1 つの値 (span 要素) を保持する配列兼 jQuery オブジェクトです。spanElement$spanElement

jQuery ライブラリと通常の Javascript を行き来するとき、本当に何を参照しているのか混乱するのは非常に簡単です。

(個人的には、DOM 要素への jQuery 参照があるときはいつでも、変数名を常に で始めます$。それは私の生活をシンプルに保ちます...)

于 2013-07-10T23:08:46.780 に答える
6

jQuery と JavaScript は別の言語ではありません。jQuery は Javascript で記述されたライブラリであるため、有効な jQuery ステートメントは有効な JavaScript ステートメントです。

Q2: location.pathnameドメイン名の後の URL のパスです。

例: http://www.google.com/s/goo.html -> パス名は s/goo.html を返します

したがって、if 条件は、この文字列に部分文字列「-s」が含まれているかどうかを調べようとしています。

于 2013-07-10T23:04:35.697 に答える
0

あなたは絶対にそれらを混ぜることができます.

location.pathname.indexOf は、現在の URL で「_s/」または「-s/」のインスタンスを検索しています。URL にこれらの文字が含まれていない場合 (または "/SearchResults.asp" と等しい場合)、jquery コードが実行されます。

于 2013-07-10T23:03:06.707 に答える
0

JQuery セレクターと通常の Javascript dom 要素の使用には注意してください。ただし、2 つが常に同じであるとは限りません。(つまり、クラス、複数のセレクター。)

于 2013-07-10T23:03:16.973 に答える
0

jQuery は、便利なメソッドを提供する単なる JavaScript オブジェクトです。はい、バニラ js と jQuery を一緒に使用できます。

于 2013-07-10T23:04:16.960 に答える