普通JavaScript等于jquery $(this)

Ale*_*les -1 javascript jquery this

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

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

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

onclick="function_call(this);return false;"
Run Code Online (Sandbox Code Playgroud)

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

T.J*_*der 5

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

function function_call(elm) {
    var row_id = $(elm).parent().parent().attr('id');
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但要完全原始的DOM ::

function function_call(elm) {
    var row_id = elm.parentNode.parentNode.id;
}
Run Code Online (Sandbox Code Playgroud)

更多关于各种DOM规范和HTML5 API:

但是:您可以以相同的方式阻止jQuery版本中的滚动:

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

在jQuery处理程序中,return false做两件事:

  1. 防止默认操作(因此在表单中的链接的情况下#,它不会滚动窗口).

  2. 防止事件冒泡DOM.

在DOM0样式的处理程序(您的onclick)中,return false阻止默认操作,但不会停止冒泡.更多关于return false各种类型的处理程序. (编辑过的问题return false在jQuery处理程序中显示了一个原本不存在的.)