Рассмотрим следующий код, который создает диалоговое окно JQuery UI:
function showBox() {
$('<div />').html('This is my dialog').dialog({
buttons: {
'Okay': function(){
$(this).dialog('close');
},
'Return': function(){
$(this).dialog('close');
}
},
close: function(){ $(this).dialog('destroy').remove(); },
modal: true,
title: 'My Dialog Title',
width: 350
});
}
И простая ссылка в теле страницы HTML:
<a href="#" onClick="showBox()">Click to open a box</a>
Код отлично работает, чтобы запустить диалоговое окно JQuery UI.
Мой вопрос: почему использование <div/>
качестве параметра $()
фактически создает рабочую рамку?
Я всегда использовал <div></div>
как мой параметр $()
для диалогов. В HTML div - это элементы уровня блока, для которых нужен тег открытия и закрытия, поэтому почему используется только <div/>
допустимый параметр?
Потому что как JQuery был разработан для работы:
В большинстве случаев jQuery создает новый элемент и устанавливает свойство innerHTML элемента в фрагмент HTML, который был передан. Когда параметр имеет один тег (с дополнительным закрывающим тегом или быстрым закрытием) -
$( "<img/>" )
или$( "<img>" )
,$( "<a></a>" )
или$( "<a>" )
- jQuery создает элемент с использованием встроенной функции JavaScript createElement().
Поэтому при создании элемента в jQuery все они эквивалентны:
<div></div>
<div/>
<div>
В простых случаях, например, этот jquery анализирует пропущенную строку сам по себе и не различает элементы, которым нужны открытые/закрытые теги и элементы, которые им не нужны.
$('<div>')