2017-02-03 2 views
0

Документов JQuery UI получение example of extending an existing UI widget method, как это:Добавить новый метод виджет JQuery UI

$.widget("ui.dialog", $.ui.dialog, 
{ 
    open: function() 
    { 
      console.log("open"); 
      return this._super(); 
    } 
}); 

Это работает для меня, используя интерфейс 1.12.1, я вижу ожидаемую запись в журнале, когда диалог открыт.

Однако, используя ту же технику для воссоздания удаленного метода .url() для вкладок пользовательского интерфейса jQuery, выдается ошибка «Неподключить TypeError: $ (...). Url не является функцией». Это мой код:

$.widget("ui.tabs", $.ui.tabs, 
{ 
    url: function (index, url) 
    { 
     console.log("url"); 
     $(this.data("uiTabs").anchors[index]).attr("href", url); 
     return this; 
    } 
}); 

Какая разница здесь, кроме того, что метод URL() создаваемом, а не продлен? Можно ли делать то, что я пытаюсь?

ответ

0

Возможно, однако, что я не уверен в этой строке после журнала, т. Е. Метод .data() выглядит недействительным здесь?

Возможно, вы имели в виду это:.

$.widget("ui.tabs", $.ui.tabs, { 
    url: function(index, url) { 
    $(this.anchors[index]).attr("href", url); 
    } 
}); 
+0

Как я уже сказал, я получаю сообщение об ошибке, что $ (...) URL не является функцией, поэтому я не могу назвать код на всех. В любом случае эта линия данных работает в автономной функции. – enigment

+0

Ты был точно прав Марка. Отдельная функция работала, потому что она имеет разные области охвата, а в новом контексте плагина data() не существует, как вы сказали. Первоначальная ошибка, которую я видел, была вызвана неправильным вызовом метода. Я использовал старый синтаксис $ (...). Url (...), должен быть $ (...). Tabs ('url', ...). – enigment

 Смежные вопросы

  • Нет связанных вопросов^_^