2015-04-21 5 views
-2

Как я могу запускать мои функции Off() и Live() без функции удаления рамки .ready()?область видимости функции мешают моей функции

<form id="1" name="first-form"> 
    <p> 
     <input type="button" value="Submit 1" onClick="Off();"> 
    </p> 
</form> 

<form id="2" name="second-form"> 
    <p> 
     <input type="button" value="Submit 2" onClick="Live();"> 
    </p> 
</form> 

Мой JS код ниже:

$(document).ready(function(){ 
    function Off(){ 
     alert('off'); 
    } 

    function Live(){ 
     alert('live'); 
    } 
}); 
+2

Почему все эти функции в DOM готовы? –

+2

В чем проблема с размещением функции вне '.ready'? – leopik

+0

Я не буду рекомендовать, вы можете использовать 'window.Off = function()' вместо 'function Off()' лучше перемещать вашу функцию за пределами '.ready' – Satpal

ответ

0

сделали комментаторам что вы должны просто перемещать функции из области действия. Но если это невозможно, вы можете добавить функции к объекту (так что у вас нет большого количества переменных, загрязняющих глобальную область) и экспортируйте их; затем просто измените имя функций, которые вызывает события кликов.

JavaScript

$(document).ready(function() { 

    window.module = { 
     Off: function() { 
     alert('off'); 
     }, 
     Live: function() { 
     alert('live'); 
     } 
    } 

}); 

HTML

<input type="button" value="Submit 1" onClick="module.Off();" /> 
<input type="button" value="Submit 2" onClick="module.Live();" /> 

DEMO

Серьезно, это далеко от оптимального решения, но это не ответ на ваш вопрос, я полагаю.

0

Если поместить обработчик в HTML, то ваш Funtion должны быть глобальными, попробуйте удалить готовую функцию:

function Off(){ 
    alert('off'); 
} 

function Live(){ 
    alert('live'); 
} 
Смежные вопросы