2017-08-04 114 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

這是一個可搜索的問題和答案索引。請一次提出一個問題。 –

+2

'$ this'未定義。如果你在談論DOM語法,你需要'this.value',否則你需要明確定義'var $ this = $(this);' –

+0

請爲你的破解代碼提供一個例子。 –

回答

1

在逆序$(本).VAL()說,給jQuery的(由$表示)的價值這一點,然後調用上的回報功能.VAL()功能。 $ this.val()說,調用變量$ this上的函數.val(),我懷疑你沒有定義。

它看起來像你的代碼段應該工作,但===檢查確切的字符串相等,我強烈建議你檢查你的字符串在控制檯使用console.log,以驗證它沒有任何尾隨空格或相似。用console.log()替換您的警報,然後查看開發人員控制檯(chrome上的ctrl-shift-I)。你也可以

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

看看你的問題實際上是比較。它最有可能的空白相關。

+0

感謝您的解釋。問題是字符串比較失敗的空白。 – N0000B

0

字符串的任一端可能會有額外的空白。嘗試:

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

0

jQuery的語法一般是$(selector)。如果您的案例this是您的選擇器,那麼$(this)將是正確的語法。

+0

'this'不是選擇器,它是一個DOM元素,所以這是'$(element)'的一個例子,而不是'$(selector)'。 – Barmar

+0

沒錯。我使用d3.js命名法,選擇器基於DOM元素。 – pmkro