第一个stackoverflow问题。我已经发现了一些令我困惑的东西,现在已经很长一段时间了,我不确定为什么要这样做。基本上我所做的就是在rails Link_to按钮上创建一个ruby,并指定我需要传递给Jquery的数据(图像id)问题是,每当我试图获得所有数据值时我都会这样做。最终收到的是值1!
让我给你一部分代码,希望我能够具体到足以得到一个好的回应。
以下是我的Ruby on rails Gallery索引页面的一部分
<% @gimages.each do |image| %>
<% if image.present? %>
<%= link_to (image_tag image.image_url(:thumb)), gallery_image_path(image), data:{id: image.id, remote: true}, class:"gallery" %>
<% end %>
<% end %>
正如您所看到的,数据:{id,image.id,remote:true}正在传入。页面未链接到gallery_image_path(图像),它正在执行我编码的jquery
这是Jquery
$(function(){
var photo = $('.gallery');
photo.on('click', function(event){
var id = $('.gallery').data("id");
console.log(id);
window.alert("hey");
});
});
该函数正确传递并显示window.alert,遗憾的是由于某种原因,我回来的数据总是&#34; 1&#34;,这是唯一被记录的东西。
在检查元素后,我会提供一些我的HTML:
<a class="gallery" data-id="2" data-remote="true" href="/gallery_images/2"><img alt="Thumb 1380148 10152070820204305 182164197 n" src="/uploads/gallery_image/image/2/thumb_1380148_10152070820204305_182164197_n.jpg"></a>
正如您所看到的,数据ID似乎正确传递(这些是我提供的前2张图片。
不幸的是,当我在console.log时,唯一出现的是价值1.我想知道是否有人可以向我解释这个以及如何解决这个问题。
非常感谢你们, 安德鲁
答案 0 :(得分:0)
您执行$('.gallery').data("id")
,它会返回匹配集中第一个元素的键id
的数据值,如the API中所述。使用选择器$('.gallery')
,您可以选择所有照片,这样您每次都会获得第一个id
值,在您的情况下显然为1
。
因此,当您使用$('.gallery').data("id")
替换$(this).data("id")
时,它应该可以正常工作。 $(this)
指的是点击的<a class="gallery">
元素。