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