-1

我目前有用于链接的 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)?

4

1 回答 1

5

您实际提出的问题的答案是: is 的原始等价物$(this)this但使用您 given 的形式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。

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

于 2012-07-05T09:44:34.233 回答