#jquery #click #eventtrigger
#jquery #нажмите #eventtrigger
Вопрос:
у меня проблема, у меня есть какие-то li, внутри них у меня есть ссылка и изображение. Я хочу, чтобы, когда кто-то нажимает на изображение, оно запускает ссылку. Я не могу поместить изображение в ссылку, не спрашивайте почему :)… Так что в основном это выглядит примерно так
<li><a href="somelink">sometext</a><img src=""/></li>
<li><a href="somelink">sometext</a><img src=""/></li>
...
И я думал о том, чтобы сделать что-то подобное:
$(img).click(function(){
var link = $(this).prev;
$(link).trigger('click');
})
Я знаю, что это неверно, но я думаю, вы поняли картину, спасибо за вашу помощь.
Комментарии:
1. Почему вы не можете поместить изображение в ссылку?
2. Цитата из OP : «. Я не могу поместить изображение в ссылку, не спрашивайте почему :)».
3. Всегда оспаривайте предположения — если ничто иное не разделяет мотивы.
Ответ №1:
Не используйте jQuery, а просто переместите закрывающий </a>
тег в правую часть <img>
тега:
<li><a href="somelink">sometext<img src=""/></a></li>
<li><a href="somelink">sometext<img src=""/></a></li>
Если вы не хотите изменять HTML-код, используйте:
$('img').click(function(){
location.href = $(this).prev().attr("href");
});
Обзор кода
$(img)
—img
не определено. Вы имели в виду:$('img')
? (добавлены кавычки, используя селекторimg
)var link = $(this).prev;
—prev
это не свойство, а метод. Он должен быть вызван:var link = $(this).prev()
$(link).trigger('click')
. Посколькуlink
это уже объект jQuery, нет необходимости оборачивать объект в другой объект jQuery. Использование:link.trigger('click');
- Ошибочная логика:
.trigger('click')
не приведет к переходу на страницу, поскольку она не запускает поведение браузера по умолчанию (переход по ссылке), но вызываетclick
событие элемента. Который не определен.
Комментарии:
1. да, хорошо, ваше право, но как я могу имитировать щелчок по ссылке, нажав на изображение?
2. @Mr.Sam Это второй блок кода в моем ответе. Поведение по умолчанию при нажатии на ссылку — изменение местоположения, что достигается с помощью (например)
location.href = "http://newurl";
3. спасибо, но я искал что-то, что не просто перенаправляет страницу, но и запускает ссылку… но все равно спасибо
4. @Mr.Sam Запуск ссылки == перенаправление страницы. Даже если ссылка содержит bookmarket (
javscript:..
) или просто hash (#notleaving
), страница не будет перенаправляться, и по ссылке будут переходить, как если бы вы переходили по ссылке.
Ответ №2:
$('img').live('click', function () {
$(this).closest('a').click();
});
Комментарии:
1. Вау, я должен сказать тебе, что это именно то, что я искал, большое тебе спасибо, чувак… ты только что спас мой день … береги себя
Ответ №3:
На самом деле, похоже, что это должно сработать. Просто обратите внимание, что prev — это функция.
В качестве альтернативы, вы могли бы сделать что-то вроде
window.location = link.attr('href');
Ответ №4:
Вероятно, вам может сойти с рук что-то вроде
$(img).click(function()
{
var link = $(this).prev();
window.location.href = link.attr('href');
});
Ответ №5:
вы можете установить класс css как для ссылки привязки, так и для изображения и использовать селектор classname для подключения события click
$(«.myclass»).click(функция (){ // Делать вещи })
Комментарии:
1. не могли бы вы быть немного более конкретными, потому что я думаю, что вы к чему-то… я имею в виду, что мне нравится эта альтернатива