Почему использование '<div />' в качестве объекта в методе диалогового окна UI JQuery работает?

0

Рассмотрим следующий код, который создает диалоговое окно 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/> допустимый параметр?

  • 2
    Вы также можете использовать $('<div>')
  • 0
    @Tim Интересно. Знаете ли вы, почему это работает без необходимости закрывать тег?
Показать ещё 2 комментария

2 ответа

7
Лучший ответ

Потому что как JQuery был разработан для работы:

В большинстве случаев jQuery создает новый элемент и устанавливает свойство innerHTML элемента в фрагмент HTML, который был передан. Когда параметр имеет один тег (с дополнительным закрывающим тегом или быстрым закрытием) - $( "<img/>" ) или $( "<img>" ), $( "<a></a>" ) или $( "<a>" ) - jQuery создает элемент с использованием встроенной функции JavaScript createElement().

Поэтому при создании элемента в jQuery все они эквивалентны:

  • <div></div>
  • <div/>
  • <div>
0

В простых случаях, например, этот jquery анализирует пропущенную строку сам по себе и не различает элементы, которым нужны открытые/закрытые теги и элементы, которые им не нужны.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню