выбрать и изменить стиль элемента. Помогите найти ошибку
Народ, помогите плиз. Не могу понять почему не выбирает элемент
вот верстка <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 никак((( |
id всегда должен быть уникальным, не должно быть два или более элементов с одним id, RTFM!
|
попробуйте такой способ. но помните, несколько элементов с одним ID - грех !
$('a.showphoto').live('click', function() { $("div").filter("#" + this.id) // див с таким же id,как у ссылки .find(".album_content") // эл с таким классом внутри этого div .css('display', 'block'); // устанавливаем display }); Цитата:
|
Цитата:
$('<div id="one"></div>').appendTo('body'); $('<span id="one"></span>').appendTo('body'); console.log($('#one'));//вернет только один элемент а не весь набор Даже в jQuery чудес не бывает |
kadabrik,
$('body') .append( $("<div/>").attr('id', 'foo') ) .append( $('<span/>').attr('id', 'foo') ) .append( $('<p/>').attr('id', 'foo') ) ; console.log( $('[id="foo"]') ); Сколько элементов вернет jQuery? |
Цитата:
|
Цитата:
и да кстати, если сравнить по скорости работы двух методов: document.getElementById('dv'); document.querySelectorAll('[id=dv]');то querySelectorAll работает быстрее |
Цитата:
|
Цитата:
|
Только вот где логика, непонятно. Это ж если такое мнение устоится, то как потом обозначивать конкретный элемент? Мир рушится...
|
на вот тести
|
я тестил в опере, в других не знаю... может и медленнее... Так что от других браузеров я отмахиваюсь
|
ок, потестил... Результат оказался ужастным :(
Opera: getElementById - 1 030 276 выполнений/1000 мс querySelectorAll - 1 096 516 выполнений/1000 мс Chrome: getElementById - 2 203 944 выполнений/1000 мс querySelectorAll - 129 707 выполнений/1000 мс FireFox: getElementById - 993 481 выполнений/1000 мс querySelectorAll - 150 381 выполнений/1000 мс IE 8: getElementById - 119 640 выполнений/1000 мс querySelectorAll - 63 778 выполнений/1000 мс Да беру свои слова обратно, не пробовал тестить на других... в Опере быстрее так как сижу на ней там и тестил... А оказалось в среднем ужас. |
Вообщем вывод простой, кто на чем сидит тот о том и знает... Я на Опере, и понятно дело утверждаю что быстрее... Человек на Хроме, и понятно дело что у него быстрее... Но все же любопытно, чтож там в опере такого сделали что работает быстрее getElementById, жаль что они никогда не откроют исходники своего движка :(
|
А осел как всегда "реактивен" :D, жаль что мне ща софт именно под него писать приходится...:-/
Да смотрю в опере querySelectorAll оставляет другие браузеры далеко позади, эх поделились бы исходничками :) хотя может она просто кеширование какоенить врубает... |
Цитата:
function test(){ for(var q in ['a','b','c','d','e','f','g','h','i','j'] ) document.getElementById(q); } test();и function test(){ for(var q in ['a','b','c','d','e','f','g','h','i','j'] ) document.querySelectorAll('[id="'+q+'"]'); } test();и вот результаты: Opera: getElementById - 189 692 выполнений/1000 мс querySelectorAll - 120 429 выполнений/1000 мс Chrome: getElementById - 420 454 выполнений/1000 мс querySelectorAll - 12 735 выполнений/1000 мс в других не пробовал так как нет смысла... Итог в опере результаты почти идентичны, скорость падает в основном из-за склеивания строки. Но в целом она работает и с тем и с тем методом с одинаковой скоростью. |
Всетаки в голову не лезет как простой getElementById работает медленнее чем сложный querySelectorAll, хотя судя по небольшой разницы в скоростях может в оперовском методе getElementById('foo') просто и вызывается querySelectorAll('[id="foo"]') :)
|
Часовой пояс GMT +3, время: 17:12. |