基本上,我的问题是当我让JS在.each循环中的rails-button上运行.click时,我需要一种方法来定位与触发脚本的同一帖子关联的特定按钮。
片段:
<% @posts.each do |post| %>
<td id=ahhu> <%= button_to 'Renew', [:renew, post], method: :post, class: 'my-target' %></td>
然后在JS:
$(document).ready(function(){
var handler = x.configure({
token: function(token) {
$('.my-target').click();
$("form").append(tokenInput).append(emailInput).submit();
}
});
$('.my-target').on('click', function(e) {
// Open Checkout with further options
handler.open({
name: 'm'
});
e.preventDefault();
});
$(window).on('popstate', function() {
handler.close();
});
});</script>
答案 0 :(得分:2)
首先,每页的元素只能有一个ID。所以,迭代这些并给他们相同的ID&#34; ahhu&#34;毫无意义。按类选择它们。你可以使用Javascript&#34;这个&#34;使用JQuery的关键字,它将保持调用它的范围。例如,
<% @posts.each do |post| %>
<td class="ahhu"> <%= button_to 'Renew', [:renew, post], method: :post, class: 'my-target' %>
</td>
然后,在JS中,您可以选择这样的特定帖子:
$('.ahhu').click(function() {
$(this). // whatever you want to do here.
}
尝试执行&#34; console.log($(this))并在浏览器的控制台中查看。您会注意到范围会发生变化,并且只会针对您点击的特定帖子。你可以在&#34; my-target&#34;上做同样的事情。或者只是遍历DOM结构,直到你得到孩子&#34; my-target。&#34;这是一种更加动态的方式来处理javascript中的特定事件,而不是添加在迭代时数量增加的ID。
答案 1 :(得分:0)
我的一些代码
<input type="button" class="class1" value="123"/>
<input type="button" class="class1" value="456"/>
list = document.getElementsByClassName('class1')
for (var i = 0; i < list.length; i++) {
alert(list[i].value); // use your Js call here .
}
这应该开始......
答案 2 :(得分:0)
你无法通过Rails视图中的循环来处理这个问题,为每个按钮创建一个唯一的ID吗?
posts.each do |post|
link_to post.name, id: "btn-#{post.id}"
end
如果不知道您是如何尝试在服务器端生成这些链接/按钮的话,很难给出正确的指导。