Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   проверка css :target в jquery Почему не работает? (https://javascript.ru/forum/dom-window/69525-proverka-css-target-v-jquery-pochemu-ne-rabotaet.html)

crystaltrumpet 30.06.2017 14:03

проверка css :target в jquery Почему не работает?
 
Всем привет гуру и повелителям Js и Jq
подскажите плиз почему не работает проверка по выборке :target?
Уже и документацию прочитал что есть поддержка:
http://api.jquery.com/target-selector/
А в скрипте не работает :-/

Вот задачка:
Есть вкладки таб которым присваивается
domain/name#id1
domain/name#id2
domain/name#id3
В зависимости от выбранного #id... открываются и закрываются div-ы:
#id1, #id2, #id3{
display: none;
}
#id1:target, #id2:target, #id3:target{
display: block;
}
Задача: определить какая вкладка в данный момент none, а какая block
я пробовал сделать так:
(document).ready(function(){
if ($("#main111 #id1:target").is(':hidden')) {
$("#state").text("блок закрыт");
}
else if ($("#main111 #id1:target"").is(':visible')){
$("#state").text("Блок все таки открыт");
и скрипт не работает.
Есть второй вариант:
отследить по url адресу
domain/name#id1
domain/name#id2
domain/name#id3
но я не знаю как это сделать

ksa 30.06.2017 14:12

Цитата:

Сообщение от crystaltrumpet
Почему не работает?

Это больше вопрос к разработчикам...

laimas 30.06.2017 14:16

Это неверное использование селектора. Данный селектор выбирает элемент, id которого присутствует в URL, есть такой хеш.

crystaltrumpet 30.06.2017 14:20

так как же мне тогда записать? уверен вы знаете:)
Задача определить скрыт или не скрыт id1,2,3
при этом у меня в css используются:
#id1, #id2, #id3{
display: none;
}
#id1:target, #id2:target, #id3:target{
display: block;
}

ksa 30.06.2017 14:20

Цитата:

Сообщение от laimas
Это неверное использование селектора.

Селектор нормальный...

<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
#t1:target {
	color: green;
}
</style>
<script type='text/javascript'>
$(function(){
	$('#t1:target').click(function(){
		alert('Ok');
	});
});
</script>
</head>
<body>
<a href='#' id='t0'>Test 0</a>
<a href='#' id='t1'>Test 1</a>
</body>
</html>

ЦСС его понимает. А вот событие не навешивается... :no:

ksa 30.06.2017 14:22

Цитата:

Сообщение от crystaltrumpet
так как же мне тогда записать?

Обходись без селектора...
Бери потенциально нужный элемент... Потом проверяй чего там у тебя в хеше, потом "если да кабы". ;)

laimas 30.06.2017 14:24

Цитата:

Сообщение от ksa
Селектор нормальный

селектор то нормальный, а вот применение его есть не нормальное представление.

Если в URI domain/name#foo, и на странице есть например DIV с ID равным foo, то $('div:foo') вернет этот элемент, иначе ничего, если в URI не будет хеш.

crystaltrumpet 30.06.2017 14:26

так как же мне тогда записать? уверен вы знаете
Задача определить скрыт или не скрыт id1,2,3
при этом у меня в css используются:
#id1, #id2, #id3{
display: none;
}
#id1:target, #id2:target, #id3:target{
display: block;
}
Можно выборку сделать по хешу конечно, но я не знаю как это сделать
Как написать выражение:
Если domain/name#id1 то выполняется {}?

laimas 30.06.2017 14:29

Цитата:

Сообщение от crystaltrumpet
так как же мне тогда записать?

читайте, что это за селектор и как он работает - https://api.jquery.com/target-selector/

crystaltrumpet 30.06.2017 14:32

Цитата:

Сообщение от laimas (Сообщение 457020)
читайте, что это за селектор и как он работает - https://api.jquery.com/target-selector/

это же написал с самого начала и оно НЕ РАБОТАЕТ!
я прошу мне объяснить а не перекидывать на то что я уже сам прочитал и да, я не такой умный как Вы и не понял...
все пишут одно и то же - читайте учитесь... тогда смысл форума, если я не могу ничего спросить чтобы меня не послали...
спрошу у людей, которые не "посылают":
Есть вкладки таб которым присваивается
domain/name#id1
domain/name#id2
domain/name#id3
В зависимости от выбранного #id... открываются и закрываются div-ы:
#id1, #id2, #id3{
display: none;
}
#id1:target, #id2:target, #id3:target{
display: block;
}
Задача: определить какая вкладка в данный момент none, а какая block
я пробовал сделать так:
(document).ready(function(){
if ($("#main111 #id1:target").is(':hidden')) {
$("#state").text("блок закрыт");
}
else if ($("#main111 #id1:target"").is(':visible')){
$("#state").text("Блок все таки открыт");
и скрипт не работает.
Есть второй вариант:
отследить по url адресу
domain/name#id1
domain/name#id2
domain/name#id3
но я не знаю как это сделать


Часовой пояс GMT +3, время: 15:51.