Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Отобразить ближайшие блоки

Сообщения:  [1-6] 

 
 автор: confirm   (12.11.2012 в 06:55)   письмо автору
 
   для: OLi   (11.11.2012 в 23:55)
 

Видимо не поняли, если такой вопрос задаете. Этот вопрос никак не связан с первым вашим, а уж тем более с моим ответом, в котором я и отдаленно не намекал на то, что в подобном блоке нельзя скрыть дочерей 1,2,3.

jQuery, это не язык программирования, а библиотека, которая оперирует возможностями исключительно JS, а ни чем-то иным. И если JS прекрасно знает о родителях, предках, дочерях и братьях, о коллекциях на странице, и может ими оперировать, то странно было бы, если библиотека jquery не содержала бы в себе подобных методов, и не дополняла бы иных возможностей. Есть, и можете обратиться к этим элементам как по селектору набора, или как индексам, или как к срезу.

Я вам говорил совсем о другом:
- если вы добавляете в атрибут класса еще класс, наугад, не зная потом как его определить, это плохо.
- если это добавление класса служит для обращения к элементам, то это не просто плохо, это крайне расточительно.

Я говорил о том, что, если, например, на странице есть четыре меню, два левых, два правых, а также просто блоки левые и правые, у которых есть общее стилевое оформление, и есть различия, то оформлять эти стили надо не абы как попало с именами, а так, чтобы и удобно было для возможного редактирования/изменения, плюс легкое для восприятия и запоминания. При этом использовать составные имена классов (через пробел), вот для этого это в самый раз:
.blocks {style}
.left {style}
.right {style}
.menu {style}  
class="blocks left menu"
class="blocks right menu"
class="blocks left"
class="blocks right"
Рассказывать еще о такой выгоде против бах_трах_страх или не стоит? Но это исключительно для оформления, а никак не для того, чтобы гонять ресурсы поиском и разбором таких классов, ради обращения к элементу.

А обращаться надо по id, и их лучше группировать по иному принципу (не смотря на то, что есть селектор и в CSS, и jquery, для значений разделенных пробелом), так, чтобы это было и одно имя, и в тоже время можно было выбирать группу по таким именам. Вот это я и пытался объяснить ранее.

  Ответить  
 
 автор: OLi   (11.11.2012 в 23:55)   письмо автору
 
   для: confirm   (11.11.2012 в 17:22)
 

понял. т-е если есть такая структура:

<div class="blocks_menu">
<div></div   //1

<div>  //2
<div></div>
<div></div>
<div></div>
</div>

<div></div>//3
</div>

То никак, без определения класса для div внутри class="blocks_menu - не скрыть все блоки div 1,2,3?

  Ответить  
 
 автор: confirm   (11.11.2012 в 17:22)   письмо автору
 
   для: OLi   (11.11.2012 в 15:42)
 

Естественно ноль, потому и не получается у вас. А с чего вы думаете, что он должен был найти элемент по такому имени класса?
Это в атрибуте элемента class указываете несколько классов разделяя их пробелами, а вот обратиться к такому элементу по классу можно только указав сразу два класса, например такими методами:
alert($('.view_rest_full.tab_1').length);
alert($('div.view_rest_full').filter('.tab_1').length);

Составное имя класса (из двух и более классов) полезно тогда, когда в некой однотипной группе надо выделить индивидуальность для некоторых из них. При этом порядок имен классов в атрибуте class не важен. Это означает, что для вашего правила (выбор по шаблону с начала атрибута), нужно поместить класс tab_X в начало, и тогда у вас все будет работать. Либо не помещать в начало, и использовать другой шаблон поиска, например:
$('div[class*=tab_]'


Удобно ли вообще у вас именование? Я вроде бы говорил вам, что существует удобный селектор как в CSS, так и в jquery, это выбор элемента по значению атрибута разделенного дефисами - aaa-bbb-ccc- и так до восьмерки на боку.

Этот селектор позволяет простым способом сгруппировать элементы не только по классам, но и по идентификатору, да и по любым другим атрибутам элементов:
input[name|=a] {color: #f00;}
<input name="a-1" value="1" />
<input name="b-1" value="2" />
<input name="a-2" value="3" />


По смыслу этот селектор можно было бы описать так:
правило общее для всех дефис правило для подгруппы А в группе дефис правило для подгруппы В в группе...

А именовать moe_tam_plus_div da_tab_1 ... и у каждого еще и индивидуальность, да еще разбор затруднителен... ну к чему это?

  Ответить  
 
 автор: OLi   (11.11.2012 в 15:42)   письмо автору
 
   для: confirm   (11.11.2012 в 07:14)
 

Выводит 0. Как правильно тогда сделать?

  Ответить  
 
 автор: confirm   (11.11.2012 в 07:14)   письмо автору
 
   для: OLi   (10.11.2012 в 20:07)
 

Надо всегда помнить о том, что обращение к элементам по классам, это крайний метод, и если его используете, то хотя бы ограничивайте область поиска - перед классом указывайте тег нужного элемента, то есть, не $('.tabs_instan'), а $('div.tabs_instan').
Если этот элемент у вас как контейнер родитель, то лучше задать ему id, и обращаться по id, а не классу.

>нужно отобразить лишь те блоки tab_ которые есть в родительском блоке intans

И где видно, что данный элемент является дочерним для intans? И где сам intans? Если вы это написали с сокращением для tabs_instan, чтобы не сильно утомлять свои руки, то думайте о мозгах чужих, которым придется думать над вашим вопросом.

Выполните, вот такое для вашего html-кода: alert($('div[class^=tab_]').length). Что показывает? Правильно, фигушки. Вся котовасия у вас от непродуманности как в идентификации элементов, так и в именах их стилей.

  Ответить  
 
 автор: OLi   (10.11.2012 в 20:07)   письмо автору
 
 

<div class="tabs_instan"><span rel="1">Подробнее</span>|<span rel="3">Кратко</span>|<span rel="2">На карте</span></div>



<div class="view_rest_full tab_1"></div>


  $('.tabs_instan').on('click','span', function(e){ 
    e.preventDefault(); 
    $('div[class^=tab_]').css('display','none'); 
    var tab = $(this).attr('rel'); 
    $('.tab_'+tab).toggle(); 
  });


По клику на span элемента div class="tabs_instan", не происходит отображение блока с class="tab_1", блок tab_1 подгружается на страницу, нужно отобразить лишь те блоки tab_ которые есть в родительском блоке intans в котором произошел клик.

  Ответить  

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования