Javascript jQuery将字符串与输入值进行比较

Javascript jQuery将字符串与输入值进行比较,javascript,jquery,Javascript,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

我试图在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()

谢谢

字符串的两端可能有额外的空格。尝试:

if(“SOMETHING”==$(this.val().trim())

以$(this.val()的相反顺序表示,给jquery(由$表示)this值,然后在该函数返回时调用函数.val()$这个.val()的意思是,调用变量$this上的函数.val(),我怀疑您尚未定义该变量

看起来您的代码片段应该可以工作,但是===检查字符串是否完全相等,我强烈建议您使用console.log检查console中的字符串,以验证它没有任何尾随空格或类似空格。将警报替换为console.log(),并查看开发者控制台(chrome上的ctrl-shift-I)。你也可以

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

看看你的问题是否真的是比较。但它很可能与空格有关

jQuery语法通常是
$(选择器)
。如果您的案例
是您的选择器,那么
$(此)
将是正确的语法。

这是一个可搜索的问题和答案索引。请一次问一个问题。
$未定义此
。如果您谈论的是DOM语法,那么需要
this.value
否则需要显式定义
var$this=$(this)
请为你的坏代码举个例子。发布
\select\u directory\u type
元素的HTML。
这个
不是选择器,它是DOM元素,所以这是
$(元素)
的例子,不是
$(选择器)
。对。我使用了d3.js命名法,选择器基于DOM元素。感谢您的解释。问题是字符串比较失败的空白。