Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   можно ли изменить свойства соседнего элемента?.. (https://javascript.ru/forum/events/21874-mozhno-li-izmenit-svojjstva-sosednego-ehlementa.html)

ksa 28.09.2011 16:12

1. в книжке такое не возбранялось :)
2. в контексте примера это безразницы
3. в контексте примера работает как нужно

ksa 28.09.2011 16:23

Триви, в свете последнего прочитаного, можно вообще вместо

.toggleClass('on')


использовать
http://jquery-docs.ru/effects/toggle/

Nanto 28.09.2011 16:57

Цитата:

Сообщение от ksa (Сообщение 128394)
(function() {
$(document).ready(function (){
$('a.no_text').click(function (){
$(this).next('p').toggleClass('on')
})
})
$(document).ready(function (){
$('a.no_text_all').click(function (){
$(this).nextAll('p').toggleClass('on')
})
})
})();

Сдаётся мне, this тут ни к чему...

ksa 28.09.2011 17:01

Цитата:

Сообщение от Nanto
Сдаётся мне, this тут ни к чему...

Вообще-то это элемент ДОМ. А раз так - к нему не применимы методы ЖиКвери...
Так вот конструкция

$(this)


это уже элемент ЖиКвери и к нему можно применять нужные методы.

P.S.
Но что мешает убрать и попробовать! :D

Nanto 28.09.2011 17:14

Это я к тому, что во второй части скрипта Вы вроде показываете все абзацы, так? Тогда причём тут указание на элемент DOM, вызвавший функцию (this)? Он просто присвоит всем соседним (по отношению к a.no_text_all) абзацам класс on... А надо по отношению ко всем ссылкам a.no_text.
P.S. Уж сменить класс всем <p> разом, я, конечно, смогу! :lol:

Триви 28.09.2011 17:17

Цитата:

Сообщение от ksa (Сообщение 128433)
Триви, в свете последнего прочитаного, можно вообще вместо

.toggleClass('on')


использовать
http://jquery-docs.ru/effects/toggle/

Это всё равно не решает п.3 ;)
Ладно, лучше поясню с помощью кода.
Поскольку автор хотел JS чистяком, то вот:

<a href="#" id="sh">Открыть все</a><hr />
<a href="#" class="no_text">Бла-бла1</a><p class="new_text" style="display:none">1-бла...</p>
<a href="#" class="no_text">Бла-бла2</a><p class="new_text" style="display:none">2-бла...</p>
<a href="#" class="no_text">Бла-бла3</a><p class="new_text" style="display:none">3-бла...</p>

<script type='text/javascript'>
(function() {
  var aArr = document.getElementsByTagName('A');
  for (var i=0; i<aArr.length; i++)  {
    aArr[i].onclick = function() {
        var p = this.nextSibling,
            vis = p.style.display;
        p.style.display = (vis=='none') ? 'block' : 'none';
    }
  }
  sh.onclick = function () {
    var vis;
    if(this.innerHTML=='Открыть все') {
      vis = 'block', this.innerHTML='Закрыть все';
    } else {
      vis = 'none', this.innerHTML='Открыть все';
    }
    var pArr = document.getElementsByTagName('P');
    for (var i=0; i<pArr.length; i++) {
      pArr[i].style.display = vis;
    }
  }
})();
</script>

Nanto 28.09.2011 17:23

ksa, кстати, а что это за конструкция такая?
.new_text.on {
display:block;
}
В смысле «.on» - чьих будет? JS, jQuery, CSS? Просто впервые встречаю... И что это означает навешивается подкласс или это новый класс получается? Или это сугубо жикверивская "примочка"? И поймёт ли её браузер с отключенным js?

Nanto 28.09.2011 17:26

Триви,
Спасибо большое, но прекратите все надо мной издеваться! :lol:
Я размышлял-размышлял, плюнул на всё и решил подключить jQuery, начал по новой перелопачивать более ранние скрипты (чтобы перевести их на jQ), а тут Вы снова выдаёте на чистом js...

yashka525 28.09.2011 20:30

Цитата:

Сообщение от Nanto
а тут Вы снова выдаёте на чистом js

Правильно делает! Native JS rules!! :D

Nanto 28.09.2011 22:36

yashka525,
Из-за 100кБ фреймворка? Или просто из-за понтов? Дык ради крути можно и на ассемблере писать, можно вообще в двоичной системе машинный код фигачить. Native code rules!!


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