当前位置 : 主页 > 网页制作 > JQuery >

麻烦使用’link_to’和jQuery

来源:互联网 收集:自由互联 发布时间:2021-06-15
我正在使用 Ruby on Rails 3.0.7和jQuery 1.6.1,我正在将一个AJAX click事件绑定到link_to HTML输出,如下例所示: link_to 'Link name', '#', :id = 'link_css_id' 如您所见,我将URL设置为“#”.当我点击链接时,当
我正在使用 Ruby on Rails 3.0.7和jQuery 1.6.1,我正在将一个AJAX click事件绑定到link_to HTML输出,如下例所示:

link_to 'Link name', '#', :id => 'link_css_id'

如您所见,我将URL设置为“#”.当我点击链接时,当前视图也将移动到页面顶部.因为我不喜欢这种行为,所以我没有为URL参数设置任何内容(即nil或”),但是点击链接后我会立即收到一条警告消息“错误”.然后在Firebug控制台中我得到:

uncaught exception: [Exception... "prompt aborted by user" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: resource://gre/components/nsPrompter.js :: openTabPrompt :: line 468" data: no]

如何解决此问题并避免单击链接时出现在页面顶部的行为?

AJAX请求是:

$jQ('#link_css_id').bind('click', function() {
  $jQ.ajax({
    type:    "POST",
    url:     "<%= user_url(@current_user)%>/test_method",
    data:    "test_data=test",

    error:   function(jqXHR, textStatus, errorThrown) {
      alert(textStatus + ' - ' + errorThrown + '\n\n' + jqXHR.responseText);
      $jQ('#css_id').html('error')
    },
    success: function(data, textStatus, jqXHR) {
      $jQ('#css_id').html('success')
    }
  });
});
URL“#”表示正在设置内部锚点.没有附加名称,它只关注整个页面,并向上滚动到顶部.
至于使用link_to方法,url属性是必需的,不能省略.

使用jquery,您可以使用preventDefault.这将阻止事件的默认操作(例如,单击链接将打开href url).这非常有用.您可能希望链接到未启用javascript的用户的现有页面(以及ajax调用无效的用户),而有javascript的用户会忽略它.

preventDefault documentation由jQuery.

网友评论