如何在jquery中创建一个全局函数,并从另一个加载的页面调用它

发布于 2024-11-05 05:57:33 字数 2527 浏览 0 评论 0原文

如何在 jquery 中声明全局函数,如何从使用 jquery 的 load() 函数加载到该页面上的某个 div 中的页面调用它。

第一个子页面中的功能很简单,

+-----------------------------------------------+
| main links                                    |
+-----------------------------------------------|
| +-------------------------------------------+ |
| |1st sub page (myfun function is here)      | |
| +-------------------------------------------+ |
| | +---------------------------------------+ | |
| | |                                       | | |
| | |                                       | | |
| | |                                       | | |
| | | mybutton clicked myfun called         | | |
| | |                                       | | |
| | +---------------------------------------+ | |
| +-------------------------------------------+ |
+-----------------------------------------------+

但是当我点击时,没有任何反应...... 这两个函数

myfun

myfun(tab_index, acc_id){
    alert(tab_index +" | +" acc_id);
}

mybutton

$("#mybutton").click(function(){
    var $bottomLineBtn = $(this);
    $bottomLineBtn.parent().myfun('2','43234');
})

有人可以帮助我吗.. 找到解决方案太难了.. 我已经搜索了 3 个小时了...

=================================================== ==================================

已更新

详细场景

  1. 这是我的 正在使用一些动态的东西jquery
  2. 第一页包含 2 个 div,一个 id=menu 和其他 id=subpage1
  3. 我点击 #menu 中的一个链接,页面被加载到 #子页面1
  4. 再次有一个包含 2 个 div #menu2#subpage2 的页面
  5. ,这里我制作了一个脚本,只需 1 即可自动将页面加载到 #subpage2参数....这是列表菜单的ID。
  6. 这个脚本是..

     $("#menu2 li").click(function(){
         $("#subpage2").load($(this).attr('page_link'));
       }
     }).filter('#menu2 li:eq(0)').click();
     
  7. 在加载的页面中。在最底部,我使用 2 个按钮,其中一个按钮工作正常,它调用上面的函数并更改值 li:eq(1) .. 我就是这样做的。

    $("#bottom_bar #backbtn").click(function(){
    var $bottomLineBtn = $(this);
    $bottomLineBtn.parent().parent().parent().find('#menu2 li:eq(1)').click();
    })

...但另一个按钮不起作用。我想调用属于 #subpage1 中某些 div 的函数。但无法访问它们。我只在上面的 $("#menu2 li").click(function(){ 函数旁边放置了一个函数。

 myfun(tab_index, acc_id){
        alert(tab_index +" | +" acc_id);
    }

但我不知道如何从加载的第二个按钮调用此函数进入 #subpage2

上述场景是否构成场景..请尝试理解我..我不太擅长描述...

how to declare a global function in jquery, how do i call it from a page that was loaded in some div on that page using jquery's load() function.

the function is simple in 1st sub page

+-----------------------------------------------+
| main links                                    |
+-----------------------------------------------|
| +-------------------------------------------+ |
| |1st sub page (myfun function is here)      | |
| +-------------------------------------------+ |
| | +---------------------------------------+ | |
| | |                                       | | |
| | |                                       | | |
| | |                                       | | |
| | | mybutton clicked myfun called         | | |
| | |                                       | | |
| | +---------------------------------------+ | |
| +-------------------------------------------+ |
+-----------------------------------------------+

But when i click, nothing happens...
here are both function

myfun

myfun(tab_index, acc_id){
    alert(tab_index +" | +" acc_id);
}

mybutton

$("#mybutton").click(function(){
    var $bottomLineBtn = $(this);
    $bottomLineBtn.parent().myfun('2','43234');
})

Can somebody please help me.. its too hard to find the solution.. i've been searching for 3 hours...

==================================================================================

updated

here is the detailed scenario

  1. i'm working on some dynamic stuff using jquery
  2. the first page contains 2 divs, ones id=menu and others id=subpage1,
  3. i click on one link from #menu, a page is loaded into #subpage1.
  4. there is again a page with 2 divs #menu2 and #subpage2
  5. here i made a script that loads pages automatically to #subpage2 by taking only 1 parameter ....which is id of a listmenu.
  6. this script is..

     $("#menu2 li").click(function(){
         $("#subpage2").load($(this).attr('page_link'));
       }
     }).filter('#menu2 li:eq(0)').click();
     
  7. in the loaded page. at extreme bottom, i use 2 buttons, one button works fine, it calls the above function and change the value li:eq(1) .. that i did like this.

    $("#bottom_bar #backbtn").click(function(){
    var $bottomLineBtn = $(this);
    $bottomLineBtn.parent().parent().parent().find('#menu2 li:eq(1)').click();
    })

... but the other button doesn't work. i want to call a function that belongs with some divs in #subpage1. but can't access them. i put only a function, next to the above $("#menu2 li").click(function(){ function.

 myfun(tab_index, acc_id){
        alert(tab_index +" | +" acc_id);
    }

but i don't know how to call this function from the 2nd button loaded into #subpage2

does the above scenario make scene.. please try to understand me.. i'm not very good in description...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

是伱的 2024-11-12 05:57:33

为什么不能将函数放在外部 .js 文件中,然后将其导入到主页中?

Why can't you put your function in an external .js file and then import it into your main page?

滥情稳全场 2024-11-12 05:57:33
function setGlobalFunc()
{    
   window.myfunc = (function(){alert("o hai");});    
}    

setGlobalFunc();    
myfunc();    

从另一个函数内部创建的函数,仍然可以全局访问。

根本不需要 jQuery。

function setGlobalFunc()
{    
   window.myfunc = (function(){alert("o hai");});    
}    

setGlobalFunc();    
myfunc();    

Function created from within another function, still globaly accessible.

No jQuery required at all.

苏辞 2024-11-12 05:57:33

如果动态加载内容,则需要使用 .live() 方法连接事件

$("#mybutton").live("click", function() { /* code here */ });

If content is loaded dynamically, events need to be hooked up using the .live() method

$("#mybutton").live("click", function() { /* code here */ });
荒路情人 2024-11-12 05:57:33

问题是您将该函数链接起来,就好像它是 jQuery 的一部分一样,但您尚未将其作为 jQuery 的插件。

你应该这样调用它

$("#mybutton").click(function(){
    // var $bottomLineBtn = $(this);
    // $bottomLineBtn.parent();
    myfun('2','43234');
})

,或者将你的函数定义为 jquery 的插件,

 $.fn.myfun = function(tab_index, acc_id){
    alert(tab_index +" | +" acc_id);
 };

然后像你现在那样调用它

The problem is that you chain the function as if it is part of jQuery, but you have not made it be a plugin to the jQuery.

you should call it like this

$("#mybutton").click(function(){
    // var $bottomLineBtn = $(this);
    // $bottomLineBtn.parent();
    myfun('2','43234');
})

or define your function as a plugin of jquery like

 $.fn.myfun = function(tab_index, acc_id){
    alert(tab_index +" | +" acc_id);
 };

and call it as you currently do

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文