Jquery, когда я нажимаю на IMG, он ведет себя как ссылка (запуск ссылки) - PullRequest
2 голосов
/ 27 октября 2011

У меня есть проблема, у меня есть некоторые 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');
})

Я знаю, что это не правильно, но я думаю, что вы получили картину, спасибо за вашу помощь.

Ответы [ 5 ]

4 голосов
/ 27 октября 2011

Не используйте 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 элемента. Который не определен.
0 голосов
/ 27 октября 2011
$('img').live('click', function () {
    $(this).closest('a').click();
});
0 голосов
/ 27 октября 2011

вы можете установить класс css для ссылки привязки и изображения и использовать селектор имени класса, чтобы перехватить событие щелчка

$ (". Myclass"). Click (function () {// DoМатериал})

0 голосов
/ 27 октября 2011

Вы, вероятно, можете сойти с рук что-то вроде

$(img).click(function()
{   
      var link = $(this).prev();   
      window.location.href = link.attr('href'); 
});
0 голосов
/ 27 октября 2011

На самом деле это похоже на работу. Просто отметьте, что prev - это функция.

В качестве альтернативы, вы можете сделать что-то вроде

window.location = link.attr('href');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...