2014-10-24 3 views
0

Я хочу позвонить еще одной функции перед телом, но как?JQuery внутри функция вызывает другую функцию = undefined?

Система показывает мне ошибку undefined function myx

Я могу только добавить код после тела.

<script type="text/javascript"> 
jQuery(function($){ 
    function myx() { 
     alert("omg"); 
    }; 
}); 
</script> 
</head> 

<body> 
<script> 
jQuery(document).ready(function($){ 
    $("mytest").click(function(){ 
     myx(); 
    }); 
}); 
</script> 
<a href="#" id="mytest">Check</a> 
+1

Я уверен, что его невозможно достать на 'myx' без редактирования головы. Является ли дублирование «myx» в вашем сценарии тела вариантом? – acbabis

+1

@PHPglue Событие '.ready()' является исключением. Аргумент вместо этого является ссылкой на 'jQuery', как описано в разделе« [* Слияние пространства имен jQuery *] (http://api.jquery.com/ready/) » –

ответ

0

Эта функция не входит. Вам нужно определить функцию вне обратного вызова jQuery.

<script type="text/javascript"> 
    function myx() { 
     alert("omg"); 
    }; 
</script> 
</head> 

<body> 
<script> 
jQuery(document).ready(function(){ 
    $("#mytest").click(function(){ 
     myx(); 
    }); 
}); 
</script> 
<a href="#" id="mytest">Check</a> 
+0

спасибо за ответ, я знаю, но, как я уже сказал, Я могу только добавить код после тела, я не могу редактировать код главы. Есть идеи ? – plzhelp

+2

Тогда у вас действительно есть две проблемы. –

-1

Используйте внешний JavaScript, поэтому он кэшируется в память браузера, поэтому, когда ваш клиент посещает его, он будет загружаться быстрее. Тогда посмотрите на это:

// wrapper is same as $(document).ready() with no-conflict 
jQuery(function($){ 
// should be defined once everything has loaded 
function myx(){ 
    // never use alert except to test 
    alert('OMG!'); 
} 
// passing a function name like a var is the same as Anonymous function 
$('#mytest').click(myx); 
}); 
// Ignoring outer wrapper to save indenting - indent everything further 

Важно то, что myx должна быть определена после загрузки все.

Вам не обязательно, но лучше использовать внешний JavaScript и поместить теги <script> в <head>, установив как <script type='text/javascript' src='yourUrl.js'></script>, так и совместимый с W3C. Кроме того, технологически document.body может быть недоступен для некоторых старых браузеров, если теги <script> определены в <body>, так как HTML должен быть определен до того, как JavaScript сможет его получить, поэтому вы используете функцию Anonymous внутри jQuery() (то же, что и $ (document) .ready() или JavaScript onload Event). Затем вы получаете HTML с JavaScript, потому что эти элементы доступны onload.

Смежные вопросы