Закладки пользовательского интерфейса jQuery загружаются сначала как < ul > тогда как вкладки

Другое событие NullPointerException возникает, когда объявляется массив объектов, а затем сразу же пытается разыменовать его внутри.

String[] phrases = new String[10];
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

Этот конкретный NPE можно избежать, если порядок сравнения отменяется ; а именно, использовать .equals для гарантированного непустого объекта.

Все элементы внутри массива инициализируются их общим начальным значением ; для любого типа массива объектов, это означает, что все элементы null.

Вы должны инициализировать элементы в массиве перед доступом или разыменованием их.

String[] phrases = new String[] {"The bird", "A bird", "My bird", "Bird"};
String keyPhrase = "Bird";
for(String phrase : phrases) {
    System.out.println(phrase.equals(keyPhrase));
}

26
задан Community 8 February 2017 в 14:15
поделиться

5 ответов

Это происходит из-за того, что вы вызываете $ ('# id'). Tabs () в document.ready (), что происходит, когда DOM готова к обходу [ 1 ] . Обычно это означает, что страница была отрисована, и поэтому

    отображается на странице как обычный
      без применения какого-либо стиля для вкладок.

      Это не супер "чистый", но я использую способ обойти это, добавляя класс ui-tabs к

        в HTML, что заставляет его получить Стиль CSS применяется немедленно. Обратной стороной является то, что у вас нет 100% чистого разделения поведения и кода, но положительная сторона - это выглядит красиво.

24
ответ дан 28 November 2019 в 07:08
поделиться

Как говорили другие, это потому, что jQuery не Не отображать UL в виде вкладок, пока документ не загрузится. Я решил эту проблему, просто скрыв вкладки, пока они не загрузились. Таким образом вы избавитесь от мерцания. Например:

<ul id="tabs" style="display: none;">
...
$(document).ready(function(){
  $('#tabs').tabs();
  $('#tabs').attr('display', 'block');
});
23
ответ дан 28 November 2019 в 07:08
поделиться

Это нормально, но это не должно занять несколько секунд. Сколько вы делаете в своей функции jQuery ready (AKA $ () ) перед вызовом $ ("# something"). Tabs () ? Попробуйте переместить этот вызов метода в начало вашей готовой функции.

1
ответ дан 28 November 2019 в 07:08
поделиться

Проблема в том, что CSS из jquery-ui предназначен для классов, которые скрипт jquery-ui добавляет в DOM при загрузке страницы. Вместо того, чтобы добавлять пользовательские вкладки в HTML (как предлагает gregmac), вы можете просто добавить те же правила display в свой CSS для применения к вашему идентификатору панели навигации. Когда jqueryui добавляет классы в ul и элементы списка, CSS jqueryui берет верх.

Так что добавьте это правило в свой css:

#navbarID li {
    display: inline;
}
-1
ответ дан 28 November 2019 в 07:08
поделиться

Я успешно использую вкладки пользовательского интерфейса jQuery. Вот код, который я использую:

<div id="tabs">
    <ul>
        <li><a href="">
            <span>Applicant</span></a></li>
        <li><a href="">
            <span>Insured</span></a></li>
        <li><a href="">
            <span>Beneficiary</span></a></li>
        <li><a href="">
            <span>Billing</span></a></li>
        <li><a href="">
            <span>Summary</span></a></li>
    </ul>
</div>
<script type="text/javascript">

    $(function() {
        $tabs = $("#tabs").tabs({
            disabled: [1, 2, 3, 4],
            event: null,
            load: function(event, ui) {
                handleload(ui);
            },
            selected: 0
        });
    });

</script>

Что касается порядка, я всегда сначала помещаю jquery-ui.css, а затем jquery.min.js и jquery-ui.min.js. Я использую последние версии (jQuery 1.3.2 и jQuery 1.7.2), которые обслуживаются из Google CDN.

-1
ответ дан 28 November 2019 в 07:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: