Перейти к содержимому

Сервис обмена электронных валют


Обработка ссылок опираясь на свойства тега

#1 WebMaster

WebMaster
  • Пользователь
  • 97 сообщений
  • Репутация: 3
0

Отправлено 28 Сентябрь 2013 - 18:34

Всем привет. Столкнулся с задачей, с которой справиться не могу. В общем...
Есть код:

<span class="hidden-link-comments" data-link="%1$s">%2$s</span>

В параметр %1$s подставляет УРЛ комментатора. В параметр %2$s его ник. Специально не стал реализовывать через тег ссылок. Есть причины, не спрашивайте. Реализовал через спан.

Есть JQuery код-обработчик тега SPAN. Работает всегда одинаково. Вот он:
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});

При клике на ссылку будет открывать новое окно и перемещать на сайт автора комментария. Но, если по каким то причинам, у автора комментария нет сайта, то соответственно он его не указывает, так же как и админу не за чем указывать свой сайт в коммента, да еще и прикреплять его ссылкой к нику.

Вот в чем траблы. Как сделать так, что если параметр data-link пуст, то тогда поменять параметр class, на любой другой, например hidden-link-no-url? Как подобное реализовать на JQ? У меня не получается. Помогите плиз решить момент этот! Надо как то доработать код так, чтобы он был универсальный, и работал, когда нужно, а не всегда, независимо, указал человек УРЛ или нет.

 

 

  • 0

#2 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 28 Сентябрь 2013 - 19:16

как обрабатывать классы для элемента читаем вот тут

а получить значение любого атрибута можно вот так

var datalink = $('.hidden-link-comments').attr('data-link');
  • 1

#3 WebMaster

WebMaster
    Topic Starter
  • Пользователь
  • 97 сообщений
  • Репутация: 3

Отправлено 28 Сентябрь 2013 - 19:33

isvetlichniy, спасибо, сейчас буду пробовать!
  • 0

#4 WebMaster

WebMaster
    Topic Starter
  • Пользователь
  • 97 сообщений
  • Репутация: 3

Отправлено 28 Сентябрь 2013 - 21:21

Я что то делаю не так?
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});
var className = $('#link-comments').attr('class');
var datalink = $('.hidden-link-comments').attr('data-link');
if (datalink == '') {
  $('#link-comments').toggleClass('hidden-link-no-url');
  }

а ну и соответственно
<span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>

не присваивает(( пытаюсь еще подумать...

if (datalink == "") {
  $('#link-comments').removeClass().toggleClass('hidden-link-no-url');
  }
тоже нет...

Ведь все верно в первый раз, если datalink равна пустоте (пробовал false), то присвоить нужно новый класс. Почему то не пашет... Я плохо разбираюсь...
  • 0

#5 WebMaster

WebMaster
    Topic Starter
  • Пользователь
  • 97 сообщений
  • Репутация: 3

Отправлено 28 Сентябрь 2013 - 21:45

может надо для прямо в самом цикле PHP где происходит вывод комментариев прям там писать условия, чтобы для каждого комментария data-link имела атрибут?
  • 0

#6 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 28 Сентябрь 2013 - 21:49

попробуй вывести промежуточные значения для тестирования ну и класс удаляй/добавляй немного по другому
$('.hidden-link-comments').click(function(){window.open($(this).data('link'));return false;});
var className = $('#link-comments').attr('class');
var datalink = $('.hidden-link-comments').attr('data-link');

alert(className);
alert(datalink);

if (datalink == '') {
  $('#link-comments').toggleClass('hidden-link-no-url');
  }

дальше, смотри в консоли ошибок, нету ли каких то ошибок

и еще, что это за элемент с id = link-comments
он вообще существует?
  • 0

#7 WebMaster

WebMaster
    Topic Starter
  • Пользователь
  • 97 сообщений
  • Репутация: 3

Отправлено 28 Сентябрь 2013 - 22:06

ну да, это строка, тот самый спан, в котором нужно классы поменять.
<span id="link-comments" class="hidden-link-comments" data-link="%1$s">%2$s</span>

Сейчас попробую. Делал уже с даталинк, вывел пустое окно.

alert(className);

это вытащило названия класса, а даталинк как всегда вышел пустой. Точнее в окне был только класс SPAN'a

надо собрать даталинк со всех комментариев!!! Надо впихать в цикл и чтобы распределилось каждое значение, и вывелось с новой строки например. Как это сделать? с for??

я не знаю как..(( поробовал ни че не пашет... я не соображаю в программировании...
  • 0

#8 WebMaster

WebMaster
    Topic Starter
  • Пользователь
  • 97 сообщений
  • Репутация: 3

Отправлено 29 Сентябрь 2013 - 07:20

Ребят, помогите кто нибудь условие написать, плиз... Я использую вордпресс.
  • 0

#9 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 29 Сентябрь 2013 - 11:41

что ты хочешь получить в итоге? опиши свою задачу и конечный результат
есть куча плагинов для комментариев, не пробовал искать готовые решения?
  • 0

#10 c0ns0l3

c0ns0l3
  • Пользователь
  • 264 сообщений
  • Репутация: 49

Отправлено 29 Сентябрь 2013 - 12:19

<!DOCTYPE HTML>
<html>
    <head>
	 <meta http-equiv="content-type" content="text/html" />
	 <meta name="author" content="c0ns0l3" />
	 <title>Untitled 1</title>
	    <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>
	    <!-- Вариант №1 через jQuery как Вы хотели-->
	    <script>
		    (function($){
			    $(document).ready(function(){
				    $('span.link-comments').each(function(i){
					    el = $(this);
					    el_link = el.attr('data-link');
					    if(el_link && el_link.length>5) {
						    $(this).addClass('visible-link-comments');
					    }else {
						    $(this).addClass('hidden-link-comments');
					    }
					   
				    });
			    });
		    })(jQuery)
	    </script>
	    <!-- Вариант №2 через CSS-->
	    <style>
		    .link-comments[data-link ^= "http"] {background: #39a4ff;}
	    </style>
    </head>
   
    <body>
	    <style>
		    .hidden-link-comments {background: #ff5a5a}
		    .visible-link-comments {background: #39a4ff;}
	    </style>
	    <span class="link-comments" data-link="">Empty Link</span>
	    <span class="link-comments" data-link="http://masterwebs.ru">http://masterwebs.ru</span>
	    <span class="link-comments" data-link="%1$s">Wrong Link</span>
    </body>
</html>

Вариант №3:
Если вы уже форматируете при помощи РНР, то почему бы вообще не выводить целый SPAN?
  • 1

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru