普通JavaScript等于jquery $(this)

时间:2012-07-05 09:42:18

标签: javascript jquery this

我目前有链接的jQuery代码。单击选定的链接时,将打开对话框。

$('.dialog_link_add').click(function(){
    var row_id = $(this).parent().parent().attr('id');
    return false;
}

因为对话框总是使窗口滚动到顶部(在Internet Explorer中),我通过使用普通的JavaScript并使用旧的方式实现方法找到了解决方案。

onclick="function_call(this);return false;"

......但它不起作用。我现在如何发送“this”参数等于jQuery $(this)?

1 个答案:

答案 0 :(得分:5)

您实际问过的问题的答案是:$(this)的原始等效值是this,但是以您给定的onclick的形式,它将是您传入的参数你的功能。如果你愿意,可以继续在该函数中使用jQuery,只需接受元素作为参数(因为这就是你传递它的方式),然后在其上使用$()

function function_call(elm) {
    var row_id = $(elm).parent().parent().attr('id');
    // ...
}

但要完全原始的DOM ::

function function_call(elm) {
    var row_id = elm.parentNode.parentNode.id;
}

各种DOM规范和HTML5 API中的更多内容:

但是:你可以用同样的方式阻止jQuery版本中的滚动:

$('.dialog_link_add').click(function(){
    var row_id = $(this).parent().parent().attr('id');
    return false; // <<=============
});

在jQuery处理程序中,return false执行两项操作:

  1. 阻止默认操作(因此,对于#形式的链接,它不会滚动窗口。)

  2. 防止事件冒泡DOM。

  3. 在DOM0样式的处理程序(您的onclick)中,return false会阻止默认操作,但不会停止冒泡。 More about return false in various types of handlers (已编辑的问题在jQuery处理程序中显示return false,该句柄原本不存在。)