Первый вопрос о stackoverflow. Я нашел кое-что, что озадачило меня в течение довольно долгого времени, и я не уверен, почему он это делает. В основном, что я сделал, создается рубина на кнопках Link_to rails и заданы данные, которые мне нужно передать в JQuery (идентификатор изображения), проблема, каждый раз, когда я пытаюсь получить это значение данных, все, что я получаю это значение 1!
Позвольте мне дать вам часть моего кода и, надеюсь, я могу быть достаточно конкретным, чтобы получить хороший ответ.
Вот часть моего Ruby on rails Gallery index page
<% @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, к сожалению, по какой-то причине данные, которые я возвращаю, всегда "1", это единственное, что регистрируется.
Я проведу некоторые из моих 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>
Как вы можете видеть, идентификатор данных, кажется, проходит правильно (это были первые 2 снимка, которые я предоставил.
К сожалению, единственное, что появляется, когда я console.log является значением 1. Мне было интересно, может ли кто-нибудь объяснить это мне и как я могу решить эту проблему.
Большое вам спасибо, Андрей
Вы делаете $('.gallery').data("id")
, который возвращает значение данных для id
ключа первого элемента только в согласованном наборе, как написано в API. С помощью селектора $('.gallery')
вы выбираете все фотографии, чтобы каждый раз получать первое значение id
, что, по-видимому, 1
в вашем случае.
Таким образом, он должен корректно работать при замене $('.gallery').data("id")
на $(this).data("id")
. $(this)
относится к элементу <a class="gallery">
.