Javascript отображать HTML, если Div существует - PullRequest
0 голосов
/ 05 октября 2011

Я пытаюсь отобразить таблицу (или ul), которая будет содержать панель навигации на моей странице, но отображает только вкладки, которые будут содержать jquery, называемый div, присутствующим в html.

По сути, этоодин HTML-документ, который содержит все div, jquery скрывает все div, кроме первого, а навигационная панель позволяет перемещаться по каждому.Теперь я пытаюсь упростить его использование для моего клиента, чтобы пункты меню существовали только в том случае, если для него также существует div.Я сделал большую часть этого, единственное, что на самом деле знает, существует ли div.

Я попытался использовать это:

if(document.getElementById("page1")) {
document.write("<b>Good morning</b>");}
else 
{
document.write("<b>Bad morning </b>");
}

Когда я помещаю вышеуказанный код в div page1, он возвращает истину.Разве нет способа сделать это в верхней части страницы, а не внутри div?

Спасибо!

Обновление:

Как подсказывают многие, я использовалследующее:

$j(document).ready(function(){
    //Hide the sections we don't need right away
    $j("#page2").hide();
    $j("#page3").hide();
    $j("#page4").hide();
    if ($j('#page1').length > 0) {
var page = 'Excellent Morning'   ;
}
});

Затем, когда я пытаюсь использовать:

document.write(page);

Вместо этого отображается следующее: [объект HTMLBodyElement]

Ответы [ 3 ]

1 голос
/ 05 октября 2011

Если вы поместите его в верхнюю часть страницы, div page1 не будет существовать во время выполнения кода.Если вы используете jQuery, поместите код в $(document).ready событие .Затем вы можете поместить его в нужную вам разметку.Вот пример:

$(document).ready(function() {
    if (document.getElementById("page1")) {
        document.write("<b>Good morning</b>");
    } else {
        document.write("<b>Bad morning </b>");
    }   
});

Хотя вместо того, чтобы делать document.write, я бы рассмотрел наличие заполнителя span или div и установку его свойства innerHTML ( или использование jQuery's html).метод ).Я бы также использовал CSS для своего стиля вместо тегов <b>, но это совсем другое дело.

1 голос
/ 05 октября 2011

Почему бы не использовать jQuery, поскольку вы уже?

if ($('#page1').length > 0) {
    // do stuff...
}

РЕДАКТИРОВАТЬ : Как отметил Дэвин, ваш код должен быть оценен после того, как DOM был визуализирован. Вы можете сделать это, разместив вызов $(document).ready:

$(document.ready(function() {
    if ($('#page1').length > 0) {
        // do stuff...
    }
});

РЕДАКТИРОВАТЬ 2 : Основываясь на изменениях OP, лучшим решением было бы добавить элемент-заполнитель и установить его содержимое (как предложено FishBasketGordo). Пример этого:

$(document.ready(function() {
    //Hide the sections we don't need right away
    $("#page2, #page3, #page4").hide();
    if ($('#page1').length) {
        $('#myPlaceHolder').html('<b>Good Morning</b>');
    }
    else
    {
        $('#myPlaceHolder').html('<b>Bad Morning</b>');
    }
});

Где-то еще в документе ...

<span id="myPlaceHolder"></span>
0 голосов
/ 05 октября 2011

Вы можете использовать

if ($(selector).length > 0) {
    // element exists
}

или вы можете проверить этот пост для более элегантного решения Есть ли функция "существует" для jQuery?

...