Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > jQuery получить элемент


Автор: SneG0K 11.8.2009, 10:26
Код

<div id="global" class="status" 
    style="border:2px solid black;display:none;position:absolute;
        top:50%; left:50%;background-color:Silver;width:320; height:240;">
       <div id="msg"></div>
    <img src="core/picutes/close.png" class="closeStatus" />
</div>


Как получить <div id="msg"></div> innerHTML - ?

Код

$("div#global div#msg .status").innerHTML

Проверить пока не могу, но сдается мне, что работать это не будет

Автор: IDVsbruck 11.8.2009, 11:35
Наиболее правильный:
Код

$("div#global div#msg .status").html()

Но можно и стандартным свойством:
Код

$("div#global div#msg .status")[0].innerHTML

или
Код

$("div#global div#msg .status").eq(0).innerHTML


И, кстати, $("#global") работает быстрее, чем $("div#global"), тогда как $("div.status") будет быстрее, чем $(".status")

Автор: SneG0K 11.8.2009, 11:38
и сразу вопрос в догонку, у этого элемента display:none, как можно сделать, чтоб он медленно появился? 

Автор: IDVsbruck 11.8.2009, 11:44
Оф кос:
Код

$(element).css({"display":"block", "opacity":0}).animate({"opacity":1}, 1000);


У animate есть еще 2 параметра - easing и callback - часто бывает, что нужно.

Автор: SneG0K 11.8.2009, 11:48
IDVsbruck, Спасибо)  smile 

Автор: IDVsbruck 11.8.2009, 12:00
Угу. Только не уверен, что с предустановленным display:none у тебя получится, так как элемент с таким стилем, добавленный к ДОМ, может не рендериться, а соответственно, могут быть дальнейшие проблемы. Да и разметка страдает.
Это, конечно, не последняя инстанция, но советую добавлять новые элементы со стилем visibility:hidden (соответственно, в animate поменять на "visibility":"visible").

Автор: SneG0K 11.8.2009, 12:16
IDVsbruck, угу. уже заметил. Спасибо за совет.

Добавлено через 5 минут и 20 секунд
IDVsbruck, нет, все-равно не хочет рендериться.

Добавлено через 11 минут и 15 секунд
$(".status") работает, а 
$("div#global  .status") уже нет.

Автор: IDVsbruck 11.8.2009, 12:47
Так вроде твой див с id=global имеет класс status - нужно или-или. Или есть еще элемент, который вставляется в контейнер, с таким классом? - Надо больше инфы, той, что в первом посте, не хватает.
Или чуть более конкретные вопросы ...

Автор: SneG0K 11.8.2009, 15:05
IDVsbruck, используется див тот что в первом посте. Сначала я получаю внутренний див(мгс), пишу в нем сообщение об ошибке или еще что-то. Потом я получаю внешний див, чтобы сделать его видимым.

Автор: unicross 11.8.2009, 15:37
Цитата(SneG0K @  11.8.2009,  16:05 Найти цитируемый пост)
 Сначала я получаю внутренний див(мгс), пишу в нем сообщение об ошибке или еще что-то. Потом я получаю внешний див, чтобы сделать его видимым.

На языке jQuery ваши слова превращаются в
Код

$("#msg").html("Текст сообщения");
$("#global").fadeIn(600);


Можно вообще одной строкой:
Код

$("#global").find("#msg").html("Текст сообщения").end().fadeIn(600);


Добавлено через 3 минуты и 52 секунды
А можно еще проще
Код

$("#msg").html("Текст сообщения").parent().fadeIn(600);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)