2012-03-12 109 views
1

我在jQuery中有一個函數,我希望那個函數被觸發時,我的一個JS文件應該在該特定事件上調用。如何從JQuery函數調用JS文件?

我試過以下,但它不工作。

$.getscript 

如何在jQuery中加載JS文件?

事情是我有一個頁面,通過ajax調用webservices,我使用網格來顯示。並且我在網格中有編輯按鈕。當用戶按下編輯按鈕時,我想要選擇一個選項卡(選擇四個)..所以爲此我需要調用Tab.js才能進入特定選項卡。這裏是標籤code..Wait我正在編輯帖子的代碼

標籤代碼

(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(); 
}); 
+0

能你與我們分享一些JS和HTML? – Filype 2012-03-12 04:45:37

+0

事情是我有一個頁面,通過ajax調用webservices,我使用網格來顯示。並且我在網格中有編輯按鈕。當用戶按下編輯按鈕時,我想要選擇一個選項卡(選擇四個)..所以爲此我需要調用Tab.js才能進入特定選項卡。這裏是標籤代碼..等我編輯我的帖子的代碼.. – user968441 2012-03-12 04:48:05

+0

你可以分享你寫的代碼嗎?我們不想更改庫代碼'mobile.tabs',我相信這是沒有必要的。 – Filype 2012-03-12 04:54:45

回答

1

使用谷歌分析的例子,我會建議你添加您關閉<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

我試過代碼和它的工作。它調用JS文件,但它沒有調用我的頁面文件的其餘部分,所以頁面變爲空白.. – user968441 2012-03-12 04:44:25

+0

它可能是,你需要添加返回false;到觸發加載的事件 – Filype 2012-03-12 04:46:29

+0

請爲我提供代碼。 – user968441 2012-03-12 04:53:18

0

如果你想要讓「這」指的對象調用事件的JavaScript將被嵌入內聯,那我就不知道了。

但是,只需要運行一個外部JS文件,就可以通過編程將另一個「」附加到文檔中。

1

變量區分大小寫。嘗試:

$.getScript 
+0

對不起,其實我的代碼是這樣的,我的意思是'$ .getScript' ...但不工作...你有任何其他的解決方案?? – user968441 2012-03-12 04:32:28

+0

你可以更具體嗎?你有錯誤嗎? – Blender 2012-03-12 04:33:09