Как вызвать файл JS из функции JQuery? - PullRequest
1 голос
/ 12 марта 2012

У меня есть функция в jQuery, и я хочу, чтобы при запуске этой функции один из моих файлов JS вызывался для этого конкретного события.

Я пробовал следующее, но оно не работает.

$.getscript 

Как загрузить файл JS в jQuery?

Дело в том, что у меня есть одна страница, которая вызывает веб-сервисы через ajax, и я использую Grid для отображения.и у меня есть кнопка редактирования в сетке.когда пользователь нажимает кнопку редактирования, я хочу, чтобы была выбрана одна вкладка (из четырех) ... поэтому для этого мне нужно вызвать Tab.js, чтобы перейти на конкретную вкладку.Вот код вкладки .. Подождите, я редактирую код моего сообщения

Код вкладки

(function($, undefined ) {
$.widget( "mobile.tabs", $.mobile.widget, {
options: {
    iconpos: 'top',
    grid: null,
    load: function(event, ui) { },
    beforeTabHide: function(event, ui) { },
    beforeTabShow: function(event, ui) { },
    afterTabShow:  function(event, ui) { }
},
_create: function(){
    var
        $this = this,
        $tabs = this.element,
        $navbtns = $tabs.find("a"),
        iconpos = $navbtns.filter('[data-icon]').length ? this.options.iconpos : undefined;
    var $content = $tabs.closest('div[data-role="page"]').find('div[data-role="content"]');

    $tabs
        .addClass('ui-navbar')
        .attr("role","navigation")
        .find("ul")
            .grid({grid: this.options.grid });

    if( !iconpos ){ 
        $tabs.addClass("ui-navbar-noicons");
    }

    $navbtns
        .buttonMarkup({
            corners: false,
            shadow:  false,
            iconpos: iconpos
        })
        .removeClass('ui-link');

    // Set up the direct children of the page as the tab content, hide them
    $content.children().addClass('ui-tabs-content');

    // Now show the one that's active
    if( $navbtns.filter('.ui-btn-active').length == 0 )
        $navbtns.first().addClass('ui-btn-active');
    $content.children('#' + $navbtns.eq($this.currentTab()).attr('href')).addClass('ui-tabs-content-active');

    $navbtns.bind('click', function(event) {
        navButtonClick.call(this, event);
        return false;
    })
    .bind('tap', function(event){
        navButtonClick.call(this, event);
        return false;
    });

    function navButtonClick(event) {
        $navbtns.removeClass( "ui-btn-active" );
        $( this ).addClass( "ui-btn-active" );
        $this.changeTab(event, {
            currentTab: $navbtns.eq($this.currentTab()),
            nextTab: $(this),
            currentContent: $this.currentContent(),
            nextContent: $content.children($(this).attr('href'))
        });
        event.preventDefault();
    }

    this._trigger('load', null, {
        currentTab: $navbtns.eq($this.currentTab()),
        currentContent: $this.currentContent()
    });
},
currentTab: function() {
    var $tabs = this.element,
    $navbtns = $tabs.find("a");
    return this.element.find('.ui-btn-active').parent().prevAll().length;
},
currentContent: function() {
    return this.element.closest('div[data-role="page"]').find('div[data-role="content"]').children().filter('.ui-tabs-content-active');
},
changeTab: function(event, ui) {
    if( this._trigger('beforeTabHide', event, ui) )
        ui.currentContent.siblings().andSelf().removeClass('ui-tabs-content-active');
    if( this._trigger('beforeTabShow', event, ui) )
        ui.nextContent.addClass('ui-tabs-content-active');
    this._trigger('afterTabShow', event, $.extend({}, ui, { previousContent: ui.currentContent, currentContent: ui.nextContent, nextContent: null }));
}
});
})( jQuery );

$('[data-role=page]').live('pagecreate', function(e) {
$(this).find('[data-role="tabs"]').tabs();
});

Ответы [ 3 ]

1 голос
/ 12 марта 2012

Переменные чувствительны к регистру. Попробуйте:

$.getScript
1 голос
/ 12 марта 2012

Используя пример Google Analytics, я бы посоветовал вам добавить, прежде чем закрыть тег <body>:

 <script type="text/javascript">
   var url = 'http://example.com/script.js';
   document.write(unescape("%3Cscript src='" + url + "' type='text/javascript'%3E%3C/script%3E"));
 </script>

Я предполагаю, что вам понадобится что-то вроде этого:

$('#editBtn').click(function() {
   var url = '/js/Tabs.js';
   document.write(unescape("%3Cscript src='" + url + "' type='text/javascript'%3E%3C/script%3E"));
});
0 голосов
/ 12 марта 2012

Если вы хотите, чтобы javascript был встроен так, чтобы «this» ссылался на объект, вызывающий событие, тогда я понятия не имею.

Но чтобы просто запустить внешний файл JS, вы программно добавляетееще один "" к документу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...