检查$(this)是什么

Bor*_*iet 2 javascript jquery

我正在尝试为每个单击一个复选框获取警报.

这是我的JS代码:

 $('#acts').find(':checkbox').click(function(){
     if($(this) == 'all')
     {
         alert('Checkbox Clicked');
     }
 });
Run Code Online (Sandbox Code Playgroud)

和HTML:

<div id="acts">
    <input type="checkbox" id="all">
    <input type="checkbox" value="Brussel" name="locality"> <label>Brussel</label>
    <input type="checkbox" value="Anderlecht" name="locality"> <label>Anderlecht</label>
    <input type="checkbox" value="Oudergem" name="locality"> <label>Oudergem</label>
</div>
Run Code Online (Sandbox Code Playgroud)

我首先尝试这种方式,但也尝试添加

var theName = $(this);
Run Code Online (Sandbox Code Playgroud)

var theName = String($(this));
Run Code Online (Sandbox Code Playgroud)

并在IF语句中再次比较'theName',但是$(this)或我赋给它的变量,不断返回我[Object] [object],我无法比较那样.

Mat*_*ari 10

你可以简单地检查

if(this.id == 'all')
Run Code Online (Sandbox Code Playgroud)

请注意,要访问该id属性,则无需执行此操作$(this).attr('id'):直接访问该属性更快.

正如@RoryMcCrossan在下面的评论中所说,this并且$(this)对象,因此将它们与字符串进行比较是没有意义的.

  • 只是要添加,任何`$()`操作都会返回一个jQuery对象,因此与OP中的字符串的比较永远不会起作用.您需要与对象的特定属性进行比较,正如此答案所做的那样. (3认同)

fxc*_*xck 5

像这样.

$(this).attr("id") == 'all'
Run Code Online (Sandbox Code Playgroud)

尽管使用"id"来"识别"元素并不是最好的方法.请记住,页面上只能有一个ID.dataattr可能更适合这样做.在这种情况下你会这样做

<input type="checkbox" data-something="all" />

$(this).data("something") == 'all';
Run Code Online (Sandbox Code Playgroud)