繁体   English   中英

普通JavaScript等于jquery $(this)

[英]plain JavaScript equal to 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)?

这个问题的答案,你居然问的问题是:的原始相当于$(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冒泡。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM