首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery新手:我如何将ajax内容中的非单击函数外部化?

问jQuery新手:我如何将ajax内容中的非单击函数外部化?
EN

Stack Overflow用户
提问于 2014-10-23 20:22:59
回答 1查看 103关注 0票数 1

这里是jQuery新手。我有一个页面模板,在其中我使用jQuery .load()将内容加载到选项卡中。问题是,除非我将函数直接放在内容页面(而不是外部js文件中),否则函数无法工作。我想出了如何通过改变这样的事情来使点击事件工作:

代码语言:javascript
复制
$("a.icon-search").click(function () {

对此:

代码语言:javascript
复制
$(document).on('click','a.icon-search',function() {

但是,如何使函数为非单击事件工作呢?例如,假设我正在将"contact.html“加载到我的索引文件中,并且该页面中有一个手风琴。如果我把它放在我的外部js文件中,它就不工作了:

代码语言:javascript
复制
$( ".accordion" ).accordion(); 

我必须把它直接放在"contact.html“中,这是相当混乱的。

因此,我的问题是,是否有一种简单的方法可以将类似于单击事件的函数放入外部文件中?我查看了jQuery "on()“事件处理程序文档,但它除了单击之外的唯一示例是提交。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-23 20:36:50

如果希望将JavaScript放在特定的文件中,并在通过Ajax加载内容之后执行它,则可以使用ajax回调$(<selector>).load(<url>,<callback>)和JQuery的getScript函数的组合。

例如。

代码语言:javascript
复制
$('#content').load(urlToLoad,runJSforAjaxContent);

function runJSforAjaxContent() {
        $.getScript("myAccordion.js");
}

如果希望将所有内容都放在一个JS文件中,那么将定义存储在该文件的每个选项卡中的回调函数中。

例如。

代码语言:javascript
复制
$('#tab1').load(urlToLoad,runJSforTab1Content);
$('#tab2').load(urlToLoad,runJSforTab2Content);

function runJSforTab1Content() {
       // An accordion in tab1 ajax content
      $('.accordion').accordion();
}
function runJSforTab2Content() {
       // A rooltip in tab2 ajax content
      $('.tooltip').tooltip();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26536744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档