2012-07-02 13 views
1

我有一个奇怪的问题。 我正在使用twitter bootstrap btn,btn-primary以及自定义图标类,就像他们的gliphicon一样。链接到远程与<i>标记发送直接请求,而不是ajax

示例代码低于

<a href="send/path" class="btn btn-primary" data-loading-text="Sending..." data-remote="true" style="float:none;"><i class="icon-send margin-right-5"></i>Send</a> 

当我点击准确的文本(即发送)在发送Ajax请求的按钮。 但是,当我点击按钮中的图标,它发送直接请求。 如果通过ajax加载相同的按钮。两者都很好。

我不知道为什么浏览器发送直接请求覆盖jquery rails javascript定义的数据远程函数。

回答

0

我结束了写一个动作助手有一个javascript functon一起发送一个Ajax请求使用jquery.ajax

def ajax_button_tag(url, text, button_html={}, icon_html={}) 
     icon_html[:class] = "margin-right-5" unless icon_html[:class] 
     icon_html[:class] = icon_html[:class] + " margin-right-5" unless (icon_html[:class] && icon_html[:class].match("margin-right-5")) 
     icon_html_tag = raw("<i #{icon_html.map{|k,v| "#{k}=\"#{v}\""}.join()} ></i>") 
     raw("<button #{button_html.map{|k,v| "#{k}=\"#{v}\""}.join()} onclick=\"sendAjaxRequest('#{url}');\">#{icon_html_tag}#{text}</button>") 
     end 

function sendAjaxRequest(path, mname){ 
    method_type = mname || "GET"; 
    jQuery.ajax({ 
     type: method_type, 
     dataType: "script", 
     url: path 
    }); 
} 

<%= ajax_button_tag('/path/to/resource', {:class=>"btn btn-primary", :remote=>true, 'data-loading-text'=>'updating...'}, {:class=>'icon-save icon-white'})%> 
0

这个元素。它是浮动还是绝对定位?这可能会导致浏览器以不同的方式处理它。

尝试分配它display: inline-block而不是浮动或位置,看看是否会导致问题消失。

或者,您可以将javascript函数绑定到子元素<i>元素以及<a>并查看是否有帮助。

+0

其浮动:无。 –

+0

我将如何将父标签的onclick函数绑定到i标签? –

+0

display:inline-block –