【发布时间】:2015-12-16 01:04:08
【问题描述】:
我正在开发一个 Rails 4 应用程序。我需要使用 javascript(或 jQuery)触发链接中的点击。我认为这是:
<%= link_to t('.fixture'), fixture_manager_tournament_path(format: :js), remote: true, id: 'fixture-link' %>
这会生成:
<a id="fixture-link" data-remote="true" href="/manager/tournaments/1/fixture.js">Fixture</a>
注意remote: true。
当我点击链接时这工作正常,但我需要通过 js 模拟点击。
我试过了:
$('#fixture-link').click();
$('#fixture-link').trigger('click');
$('#fixture-link').trigger('click.rails');
但它们都不起作用。 提前致谢!
编辑
@RustComet Comet 它应该替换我的一个 div 的 HTML...
@RichPeck 我的视野太大了。然后,为了避免渲染时间过长,我尝试通过 JS 加载部分。我使用了这个信息:https://stackoverflow.com/a/15174908/3893506 来实现这一点。
我的视图有各种选项卡,所有选项卡都是通过 JS 加载的(除了一个)。然后我在路由中添加了一个附加参数,以便直接访问所需的选项卡。所以我可以去/tournament?active=fixture 看看夹具。
问题是,选项卡处于活动状态,但内容不在这里。 (当然,在我点击链接之前,不会触发 ajax 请求和回调)。这就是为什么我试图在该链接上模拟一个 clic 并加载相应的选项卡。
【问题讨论】:
-
$('#fixture-link').click();是否会产生任何错误?能不能打开调试器尝试访问$('#fixture-link')看看是不是undefined? -
中间线应该可以解决问题。您是否将 JavaScript 代码包装在
$(document).ready()块中? -
@brito 不,控制台中没有错误。如果我在控制台中访问
$('#fixture-link'),它会返回正确的对象。<a id="fixture-link"...@RyanK 是的,我将 JS 包裹在jQuery(document).ready(function() { ... })中,此外,在 Chrome 控制台中执行$('#fixture-link').trigger('click');也无济于事。 -
JS 事件是否有可能实际上正在触发但没有返回任何内容?
-
为什么要模拟点击?
标签: javascript jquery ruby-on-rails html