2017-08-04 15 views
-3

に文字列を比較するので、jQueryのjQueryのは、私のような文字列比較を実行しようとしていた入力値

$('#select_directory_type').on('change', function() { 
    window.alert($(this).val()); // I can see the selection is "SOMETHING" 
    if("SOMETHING" === $(this).val()){ 
     // Never gets executed even when the selection is "SOMETHING". 
    } }); 

にもう一つの問題は、

$this.val() 
and 
$(this).val() 

感謝の違いは何であるか、です!

+1

これは、質問と回答の検索可能なインデックスです。一度に1つの質問をしてください。 –

+2

'$ this'は定義されていません。 DOM構文について話しているなら 'this.value'が必要です。そうでなければ' var $ this = $(this);;を明示的に定義する必要があります –

+0

あなたの壊れたコードの例を入れてください。 –

答えて

1

を、次に呼び出します。試してみてください関数。 $ this.val()は変数$ thisの関数.val()を呼び出します。これは定義していないと思われます。

それは、コードのスニペットはず仕事のように見えますが、===正確な文字列の等価性チェックは、私は非常にあなたはそれがいずれかを持っていませんを確認するために、にconsole.logを使用してコンソールにあなたの文字列を検査をお勧めしたいです末尾の空白または同様のもの。アラートをconsole.log()に置き換え、デベロッパーコンソール(chromeのctrl-shift-I)を調べます。

console.log("SOMETHING" === $(this).val()) 

あなたの問題が実際に比較されているかどうかを確認することもできます。その最も可能性の高い空白は関連しています。

+0

説明をありがとう。問題は、文字列比較に失敗した空白です。 – N0000B

0

文字列の両端に余分な空白がある可能性があります。そのリターンの関数.val()を($で表す)jqueryの値にこれを与える、と言う)(.val逆順$で(これを)

if("SOMETHING" === $(this).val().trim())

0

jQuery構文は通常$(selector)です。あなたのケースthisがセレクタなので、$(this)が正しい構文になります。

+0

'this'はセレクタではありません。これはDOM要素なので、これは' $(selector) 'ではなく' $(element) 'の例です。 – Barmar

+0

右。私はd3.js命名法を使用しました。セレクタはDOM要素に基づいています。 – pmkro

関連する問題