как сделать глобальную функцию в jquery и вызвать ее с другой загруженной страницы - PullRequest
4 голосов
/ 04 мая 2011

как объявить глобальную функцию в jquery, как я могу вызвать ее со страницы, которая была загружена в некоторый div на этой странице с помощью функции load () jquery.

функция проста в 1-ая подстраница

+-----------------------------------------------+
| main links                                    |
+-----------------------------------------------|
| +-------------------------------------------+ |
| |1st sub page (<b>myfun</b> function is here)      | |
| +-------------------------------------------+ |
| | +---------------------------------------+ | |
| | |                                       | | |
| | |                                       | | |
| | |                                       | | |
| | | <b>mybutton</b> 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. Я нажимаю на одну ссылку из # меню, страница загружается в #subpage1.
  4. , снова появляется страница с 2 делениями #menu2 и #subpage2
  5. здесь я сделал скрипт, который загружает страницы автоматическиomatic к #subpage2, принимая только 1 параметр .... который является идентификатором списка.
  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();
    })

... но другая кнопка не работает.я хочу вызвать функцию, которая принадлежит с некоторыми div в #subpage1.но не могу получить к ним доступ.я поставил только функцию рядом с вышеупомянутой $("#menu2 li").click(function(){ функцией.

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

, но я не знаю, как вызвать эту функцию с 2-й кнопки, загруженной в #subpage2

приведенный выше сценарий делает сцену .. пожалуйста, попытайтесь понять меня .. я не очень хорош в описании ...

Ответы [ 4 ]

5 голосов
/ 04 мая 2011

Почему вы не можете поместить свою функцию во внешний файл .js, а затем импортировать ее на главную страницу?

4 голосов
/ 16 апреля 2013
function setGlobalFunc()
{    
   window.myfunc = (function(){alert("o hai");});    
}    

setGlobalFunc();    
myfunc();    

Функция, созданная из другой функции, все еще доступной для всех.

JQuery вообще не требуется.

2 голосов
/ 04 мая 2011

Проблема в том, что вы связываете функцию, как если бы она была частью 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);
 };

и назовите его так, как вы сейчас делаете

2 голосов
/ 04 мая 2011

Если содержимое загружается динамически, события должны быть подключены с использованием метода .live()

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