gpt4 book ai didi

javascript - 如何获取点击的DOM元素?

转载 作者:行者123 更新时间:2023-11-28 13:31:04 25 4
gpt4 key购买 nike

一般在纯js或jquery中,或者在rails上下文中,如何获取被点击的DOM元素?

通常你会做这样的事情,允许你使用$(this).whatever_method

$(#something).on('click', function()
{
$(this).do_something;
}_;

但就我而言,我的 html 中有一个远程链接:true,并且在我的 Controller 中我渲染了一个 js.erb 文件。在这种情况下,js.erb 文件中的所有 JavaScript 代码都会被执行。没有地方放置单击监听器,因为执行此 js.erb 文件的唯一原因是已经单击了某些内容。但我确实想选择被单击的 DOM 元素。我该怎么做?

我不想简单地手动选择它,因为这不是很动态或可重用(另外,我必须注入(inject)逻辑来选择正确的)。

<小时/>

html

<%= link_to "text", send(some_path, @votable, vote_type: "#{s.name}"), remote: true, class: "option" %>
<%= link_to "text", send(some_path, @votable, vote_type: "#{s.name}"), remote: true, class: "option" %>

Controller

def action
render 'shared/vote'
end

/views/shared/vote.js.erb

// how to obtain the link that i clicked in the html file (i.e. the first `".option"` link rather than the second.
// would using `$(this)` here, work? it seems wrong.

最佳答案

Ajax

即使您使用remote: true,仍然有空间容纳click监听器。您可能最好使用 ajax hooks使用启动远程 ajax 调用的元素:

$(document").on("ajax:beforeSend", "#your_element", function(){
$(this).hide(); -> hides element
});

我认为您可以在示例中的 .click 事件绑定(bind)器上使用它。原因是,虽然您可以调用click,但它本质上不会对ajax调用产生任何影响;当使用ajax hooks之一时会对其产生一些影响

--

rails

对于 Rails 后端(您的 .js.erb 文件),您根本无法使用该部分引用 $(this)应用。原因是 JS 与 DOM 一起工作- 意味着它只能观察屏幕上的元素正确功能范围内的元素

如果您想直接与链接交互,您应该考虑使用我上面提到的 ajax Hook 之一,页面交互性由提到的后端 .js.erb 文件提供

关于javascript - 如何获取点击的DOM元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24845835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com