Yud*_*Yud 71 ruby ruby-on-rails
如何创建此类型的链接:
<a href="#" onclick="document.getElementById('search').value=this.value">
Run Code Online (Sandbox Code Playgroud)
link_to在Rails中使用方法?
我无法从Rails文档中找到它.
Ron*_*era 186
你可以使用link_to_function(在Rails 4.1中删除):
link_to_function 'My link with obtrusive JavaScript', 'alert("Oh no!")'
Run Code Online (Sandbox Code Playgroud)
或者,如果您绝对需要使用link_to:
link_to 'Another link with obtrusive JavaScript', '#',
:onclick => 'alert("Please no!")'
Run Code Online (Sandbox Code Playgroud)
但是,将JavaScript直接放入生成的HTML中是非常突兀的,这是不好的做法.
相反,你的Rails代码应该是这样的:
link_to 'Link with unobtrusive JavaScript',
'/actual/url/in/case/javascript/is/broken',
:id => 'my-link'
Run Code Online (Sandbox Code Playgroud)
假设你正在使用Prototype JS框架,那么JS在你的application.js:
$('my-link').observe('click', function (event) {
alert('Hooray!');
event.stop(); // Prevent link from following through to its given href
});
Run Code Online (Sandbox Code Playgroud)
或者如果你正在使用jQuery:
$('#my-link').click(function (event) {
alert('Hooray!');
event.preventDefault(); // Prevent link from following its href
});
Run Code Online (Sandbox Code Playgroud)
通过使用第三种技术,您可以保证链接将贯穿其他页面 - 如果JavaScript对用户不可用,则不会无声地失败.请记住,JS可能不可用,因为用户的互联网连接很差(例如,移动设备,公共wifi),用户或用户的系统管理员禁用它,或者发生了意外的JS错误(即开发人员错误).
Jim*_*ris 25
要跟进Ron的答案,如果使用JQuery并将其放在application.js或head部分,你需要将它包装在ready()部分......
$(document).ready(function() {
$('#my-link').click(function(event){
alert('Hooray!');
event.preventDefault(); // Prevent link from following its href
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
117934 次 |
| 最近记录: |