【问题标题】:Trigger a click with jQuery using link_to of rails 4使用rails 4的link_to触发jQuery点击
【发布时间】: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'),它会返回正确的对象。 &lt;a id="fixture-link"... @RyanK 是的,我将 JS 包裹在 jQuery(document).ready(function() { ... }) 中,此外,在 Chrome 控制台中执行 $('#fixture-link').trigger('click'); 也无济于事。
  • JS 事件是否有可能实际上正在触发但没有返回任何内容?
  • 为什么要模拟点击?

标签: javascript jquery ruby-on-rails html


【解决方案1】:

虽然很晚了,你的问题已经解决了,但这是实际的解决方案:)

$('#fixture-link')[0].click();

您错过了[0] 部分。

【讨论】:

    【解决方案2】:

    解决了!我已经通过加载正确的 JS 并使用“active”参数直接执行它来解决这个问题,而无需单击链接。 感谢所有帮助过我的人!

    如果有人想知道,这是我用过的代码(它的咖啡脚本):

    tournament = $('#main-wrapper').data('tournament')
    $.get '/manager/tournaments/' + tournament + '/fixture.js', (data) -> data
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-14
      • 2014-02-08
      • 1970-01-01
      相关资源
      最近更新 更多