Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 31.08.2011, 20:05
Новичок на форуме
Отправить личное сообщение для nabiullin11 Посмотреть профиль Найти все сообщения от nabiullin11
 
Регистрация: 17.07.2011
Сообщений: 2

выбрать и изменить стиль элемента. Помогите найти ошибку
Народ, помогите плиз. Не могу понять почему не выбирает элемент
вот верстка
<div class="album" style="display: block; " id="98">
<div class="album_name" style="display: block; "><a class="showphoto" id="98">defaulalbum</a></div>
<div class="album_content" id="98" style="display: none; ">
<div class="photo" style="display: block; ">
<img src="images/usergalleries/99/tumb/cbe359900e5b4519df00e67adfbe0771.jpg" id="150">
</div>
</div>
<div class="clear" style="display: block; "></div>
</div>


<div class="album_content" id="98" style="display: none; "> - нужно изменить свойство. Пишу функцию
$('a.showphoto').live('click',function(){
        //$(this).parent().parent().$('.album_content').css('display', 'block');
        var idblock = "div#"+$(this).attr("id").toString() + " .album_content";
        var classblock = "div.album_content";
        alert (idblock);
        
        $(idblock).css('display', 'block');
    });


на classblock отлично срабатывает, на idblock никак(((
Ответить с цитированием
  #2 (permalink)  
Старый 01.09.2011, 00:00
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

id всегда должен быть уникальным, не должно быть два или более элементов с одним id, RTFM!
Ответить с цитированием
  #3 (permalink)  
Старый 01.09.2011, 00:29
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

попробуйте такой способ. но помните, несколько элементов с одним ID - грех !

$('a.showphoto').live('click', function() {
    $("div").filter("#" + this.id)   // див с таким же id,как у ссылки
        .find(".album_content")   // эл с таким классом внутри этого div
             .css('display', 'block'); // устанавливаем display
});


Сообщение от kadabrik Посмотреть сообщение
id всегда должен быть уникальным, не должно быть два или более элементов с одним id, RTFM!
в jquery возможно всё
Ответить с цитированием
  #4 (permalink)  
Старый 01.09.2011, 10:37
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Сообщение от melky Посмотреть сообщение
в jquery возможно всё
$('<div id="one"></div>').appendTo('body');
$('<span id="one"></span>').appendTo('body');
console.log($('#one'));//вернет только один элемент а не весь набор


Даже в jQuery чудес не бывает
Ответить с цитированием
  #5 (permalink)  
Старый 01.09.2011, 11:09
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

kadabrik,
$('body')
  .append( $("<div/>").attr('id', 'foo') )
  .append( $('<span/>').attr('id', 'foo') )
  .append( $('<p/>').attr('id', 'foo') )
;
console.log( $('[id="foo"]') );

Сколько элементов вернет jQuery?
Ответить с цитированием
  #6 (permalink)  
Старый 01.09.2011, 11:19
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Сообщение от nikita.mmf Посмотреть сообщение
kadabrik,
$('body')
  .append( $("<div/>").attr('id', 'foo') )
  .append( $('<span/>').attr('id', 'foo') )
  .append( $('<p/>').attr('id', 'foo') )
;
console.log( $('[id="foo"]') );

Сколько элементов вернет jQuery?
$('#foo') - самый быстрый селектор, не надо есть суп вилкой используя $('[id="foo"]'), мы всетаки с DOM и HTML а не с XML работаем.
Ответить с цитированием
  #7 (permalink)  
Старый 01.09.2011, 11:25
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от kadabrik
$('#foo') - самый быстрый селектор, не надо есть суп вилкой используя $('[id="foo"]'), мы всетаки с DOM и HTML а не с XML работаем.
Да он к тому что давно дом позволяет использовать много раз один и тот же id. Да не спорю при использовании $('#foo') jquery просто использует getElementById и при этом возвращает один элемент, ибо этот метод больше и не может вернуть... Но если юзать такой $('[id="foo"]') способ, jquery запускает querySelectorAll встроенный в браузер и она возвращает все совпавшие элементы.. Ну а в старых браузера jquery использует Sizzle

и да кстати, если сравнить по скорости работы двух методов:
document.getElementById('dv');
document.querySelectorAll('[id=dv]');
то querySelectorAll работает быстрее

Последний раз редактировалось devote, 01.09.2011 в 11:33.
Ответить с цитированием
  #8 (permalink)  
Старый 01.09.2011, 11:45
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от kadabrik
$('#foo') - самый быстрый селектор, не надо есть суп вилкой используя $('[id="foo"]')
Так что стоит пересмотреть эти слова... Уже давно пора привыкать к тому что старое не всегда хорошо.
Ответить с цитированием
  #9 (permalink)  
Старый 01.09.2011, 12:00
Аватар для kadabrik
Кандидат Javascript-наук
Отправить личное сообщение для kadabrik Посмотреть профиль Найти все сообщения от kadabrik
 
Регистрация: 10.12.2010
Сообщений: 114

Сообщение от devote Посмотреть сообщение
стати, если сравнить по скорости работы двух методов:
document.getElementById('dv');
document.querySelectorAll('[id=dv]');
то querySelectorAll работает быстрее
Это откуда такие выводы? Он по определению медленнее. В chrome getElementById в 25 раз быстрее querySelectorAll
Ответить с цитированием
  #10 (permalink)  
Старый 01.09.2011, 12:01
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Только вот где логика, непонятно. Это ж если такое мнение устоится, то как потом обозначивать конкретный элемент? Мир рушится...
__________________
In WEB We Trust
У всех есть своя темная сторона...
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите найти ошибку... AJAX проверка существования e-mail в БД Murmurianez AJAX и COMET 1 03.08.2011 18:49
Помогите найти ошибку((( hacker_007 Общие вопросы Javascript 5 28.01.2011 17:37
Помогите найти ошибку. boneg Элементы интерфейса 1 21.09.2010 22:20
помогите найти ошибку (работает в IE но не работает в Firefox) Len4ik Javascript под браузер 2 11.05.2010 15:41
Помогите найти ошибку в скрипте sdff AJAX и COMET 4 21.07.2008 19:33