Контролировать использование .each ()

0

Поэтому у меня есть несколько ссылок:

<a class="high_res_link" href="http://www.flickr.com/photos/websterk3/6637215599/">
<a class="high_res_link" href="http://www.flickr.com/photos/44108990@N08/4416648216/">
<a class="high_res_link no_pop" href="http://oix.tumblr.com/image/72876442290">
…

Я хочу быть в состоянии предупредить каждый href индивидуально. Вместо этого в настоящее время все они предупреждают один за другим. Например, приступив к alert(href[1]) и он только предупреждает: http://www.flickr.com/photos/websterk3/6637215599/sizes/o/ (Первая ссылка)

$('.high_res_link').each(function(){
var href = $(this).attr('href');
href = href+"sizes/o/";
alert(href);
});

И я также хочу предотвратить что-либо с классом no_pop потому что он ссылается на tumblr вместо flickr. Можете ли вы создать правило для переменной href чтобы она не содержала строку tumblr?

Теги:

6 ответов

0
Лучший ответ

Это сочетание как @still_learning, так и @Alex Shilman ответы

 var href = [];
$('.high_res_link').not('.no_pop').each(function(){
  var h = $(this).attr('href') + "sizes/o/";
  href.push(h);
});

alert(href[1]);
0

каждый() будет делать именно это, перебирать каждую ссылку. Вы хотите предупредить, когда нажата конкретная ссылка. Функция click .high_res_link когда .high_res_link элемент класса .high_res_link но не из класса .no_pop. this ключевое слово относится к элементу, который вызвал функцию, поэтому он будет отображать соответствующее уведомление в зависимости от того, какой канал связи была нажата.

   $('.high_res_link').not('.no_pop').click(function(e){
       var href = $(this).attr('href');
       href = href+"sizes/o/";
       alert(href);
       e.preventDefault();
   });

FIDDLE

  • 0
    А что, если мне нужен второй тег <a> ?
  • 0
    Вы имеете в виду, что он будет показывать 2 оповещения или 2 ссылки в одном оповещении?
Показать ещё 2 комментария
0

Попробуй это:

$('.high_res_link').not('.no_pop').each(function(){
var href = $(this).attr('href');
href = href+"sizes/o/";
alert(href);
});

демонстрация

0

Вы можете использовать функцию в событии click для каждой ссылки, как показано ниже.

$(function(){
 $('.high_res_link').click(function(){
   var href = $(this).attr('href');
   href = href+"sizes/o/";
   alert(href);
 });
});

Если вы хотите оповестить об определенной ссылке. например, если вы хотите оповестить о второй ссылке, используйте приведенную ниже кодировку

 $(function(){
     $('.high_res_link').eq(1).click(function(){
       var href = $(this).attr('href');
       href = href+"sizes/o/";
       alert(href);
     });
    });
  • 0
    .hasClass возвращает логическое значение!
  • 1
    @ BlackSheep извини друг .. теперь я исправил свою ошибку.
0

Используйте дополнительный массив:

var href = [];
$('.high_res_link :not(.no_pop)').each(function(){
  var h = $(this).attr('href') + "sizes/o/";
  href.push(h);
});

alert(href[0]);
0

Можете ли вы попробовать это,

$(function(){
 $('.high_res_link').not('.no_pop').click(function(e){
   var href = $(this).attr('href');
   href = href+"sizes/o/";
   alert(href);
   e.preventDefault();
 });
});

HTML:

 <a class="high_res_link" href="http://www.flickr.com/photos/websterk3/6637215599/">
 link1</a>
 <a class="high_res_link" href="http://www.flickr.com/photos/44108990@N08/4416648216/">
  link2</a>
 <a class="high_res_link no_pop" href="http://oix.tumblr.com/image/72876442290">
 link3</a>

Демо: http://jsfiddle.net/3Vycs/1/

Ещё вопросы

Сообщество Overcoder
Наверх
Меню