Другое событие 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));
}
Это происходит из-за того, что вы вызываете $ ('# id'). Tabs () в document.ready (), что происходит, когда DOM готова к обходу [ 1 ] . Обычно это означает, что страница была отрисована, и поэтому
отображается на странице как обычный
без применения какого-либо стиля для вкладок.
Это не супер "чистый", но я использую способ обойти это, добавляя класс ui-tabs
к
в HTML, что заставляет его получить Стиль CSS применяется немедленно. Обратной стороной является то, что у вас нет 100% чистого разделения поведения и кода, но положительная сторона - это выглядит красиво.
Как говорили другие, это потому, что jQuery не Не отображать UL
в виде вкладок, пока документ не загрузится. Я решил эту проблему, просто скрыв вкладки, пока они не загрузились. Таким образом вы избавитесь от мерцания. Например:
<ul id="tabs" style="display: none;">
...
$(document).ready(function(){
$('#tabs').tabs();
$('#tabs').attr('display', 'block');
});
Это нормально, но это не должно занять несколько секунд. Сколько вы делаете в своей функции jQuery ready (AKA $ ()
) перед вызовом $ ("# something"). Tabs ()
? Попробуйте переместить этот вызов метода в начало вашей готовой функции.
Проблема в том, что CSS из jquery-ui предназначен для классов, которые скрипт jquery-ui добавляет в DOM при загрузке страницы. Вместо того, чтобы добавлять пользовательские вкладки в HTML (как предлагает gregmac), вы можете просто добавить те же правила display
в свой CSS для применения к вашему идентификатору панели навигации. Когда jqueryui добавляет классы в ul
и элементы списка, CSS jqueryui берет верх.
Так что добавьте это правило в свой css:
#navbarID li {
display: inline;
}
Я успешно использую вкладки пользовательского интерфейса 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.