Jquery когда я нажимаю на img, он ведет себя как ссылка (запускающая ссылка)

#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. не могли бы вы быть немного более конкретными, потому что я думаю, что вы к чему-то… я имею в виду, что мне нравится эта альтернатива