![](/img/trans.png)
[英]Where should I place the ScriptManager.RegisterStartupScript to call my javascript
[英]In a Rails application, where should my Javascript be and how do I call it?
只是另一個有問題的Rails新手。 我在部分.html.erb中有一些Javascript(動態),但是在另一篇文章中被告知,這實際上不是Javascript應該去的地方。 它是動態的,因此我可以找到元素的正確ID,並且僅將javascript應用於該特定元素。 我認為可以參數化javascript並將其放在外部文件中,並以某種方式從我的部分中調用它。 那是正確的方法嗎? 如果是這樣,我該怎么做? 如果沒有,我該怎么辦?
我有一個嵌套資源。 在父資源的節目中,我正在使用AJAX添加子項而沒有離開此頁面。 我有很多Javascript魔術,每個添加的孩子都需要執行。
_care_point.html.erb部分
<script>
$(function() {
$("#<%="node_#{care_point.id}" %>").live('dblclick', function(){
console.log('moo');
jQuery(this).hide();
jQuery('.close', jQuery(this).parent()).show();
jQuery('.node_input', jQuery(this).parent()).show();
});
});
</script>
<div id=<%="care_point.#{care_point.id}" %> class='draggable node_chin'>
<div id=<%="node_#{care_point.id}" %> class='node'><%= care_point.body %>
</div>
<textarea class='node_input'><%= care_point.body %></textarea>
<a class='close' href='#'>Close</a>
</div>
謝謝,
埃里克
在您的部分中:
<div id=<%="care_point.#{care_point.id}" %> class='draggable node_chin care_point'>
<div id=<%="node_#{care_point.id}" %> class='node'><%= care_point.body %>
</div>
<textarea class='node_input'><%= care_point.body %></textarea>
<a class='close' href='#'>Close</a>
</div>
在public / javascripts / application.js(您的js應該在的位置)
$(function() {
$(".care_point").live('dblclick', function(){
console.log('moo');
jQuery(this).hide();
jQuery('.close, .node_input', jQuery(this).parent()).show();
});
});
使用Rails已有數年,因此我從未在視圖中動態生成JS。 我想不出一個需要用到的好用例(如果您能想到一個用例,請發表評論)。
我遇到過類似的情況,需要按ID引用DOM元素(例如,一個期望ID作為參數的自定義庫)。 在這種情況下,我通常要做的是生成Erik指出的內聯javascript,或者更混合的解決方案是添加一個類,然后遍歷該類的所有元素,獲取其ID,並將其綁定到相應的事件(或執行任何操作您需要提供ID)。
我也希望看到一個最佳實踐 ……
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.