什么是"这"在活动中.on('点击',' class',function(){})

时间:2015-10-29 19:53:24

标签: javascript jquery this event-delegation

我尝试访问我点击的行来添加或删除一个类,但似乎我误解了this的值。它不是要调用事件的DOM(在这种情况下是<li>)吗?这是我的代码:

JAVASCRIPT

$(document).on('click', '.ToDownload', function() 
        {
            if($(this).className.lastIndexOf("isSelected") != -1)
            {
                $(this).addClass("isSelected");
                $(this).css('border', '2px solid #000099')
            }
            else
            {
                $(this).removeClass("isSelected");
                $(this).css('border', 'none')
            }
        });

HTML

<li id="addedDownloadFileRow" class="fitting ToDownload">
    <a href="#">
        <div class="ui-grid-a">
            <div class="ui-block-a">test1</div>
            <div class="ui-block-b">test2</div>
        </div>
    </a>
</li>

事实上,我认为我可以使用属性className来查找我的行是否已被选中,但似乎this不是<li>标记的DOM。任何信息或方式可以看到this到底是什么。

P.S。课程&#34;拟合&#34;仅用于某些css目的。

2 个答案:

答案 0 :(得分:2)

thisDOM Element$(this)是jQuery对象

完整的工作代码位于http://jsfiddle.net/tomi77/xgv8q9md/

答案 1 :(得分:0)

如果您使用Chrome(不确定这是否适用于Firefox),您可以将this的值记录到控制台。

如果它是一个jQuery对象,可能不清楚它引用了哪个元素,但是直接获取底层元素。

console.log(this[0]);

这将为您提供元素本身的最小代表,如果将鼠标悬停在元素上,您将看到在Web视图中突出显示的元素。

enter image description here

这使您可以看到完全它所引用的元素。如评论中所述,您还可以使用console.dir(element)将元素的直接对象形式记录到控制台。