2013-11-07 2 views
0

Я написал этот код кажется правильным, но появляется сообщение об ошибке:Jquery вопрос, функция не определен

Uncaught ReferenceError: show is not defined 

Это мой простой код:

(function ($) { 
    $(document).ready 
    (
     function() { 
      $('.mapban').parent().jclip(0, 0, 1060, 750); 

      $('#mapplane').draggable(); 

      $('#mapplane > div ').css('display', 'none'); 

      $('.button').attr('onclick','show(this)'); 

      function show(button){ 
      alert(button); 

      } 

     } 





    ) 
})(jQuery) 
+2

Почему во имя бога вы пытаетесь установить 'onclick' атрибут с JQuery ?! У вас есть легкий доступ к правильному пути для этого (установка неэксклюзивных обработчиков событий). –

ответ

1

Вы должны объявить объявить функцию шоу за пределами вызова $ (document) .ready (...);

То, как вы это объявили, область действия ограничена временем выполнения этой функции и не может быть видна на странице.

3

Это не работает, потому что функция show() не в window сфере, она внутри рамки document.ready функции и uneccessary IIFE, в то время как обработчик OnClick элемента пытается вызвать его из окна (глобальная) сферы ,

Лучше всего использовать атрибуты JQuery

jQuery(function($) { 
    $('.mapban').parent().jclip(0, 0, 1060, 750); 
    $('#mapplane').draggable(); 
    $('#mapplane > div ').hide(); 

    $('.button').on('click', show); 

    function show(){ 
     var button = this; 
     alert(button); 
    } 
}); 
+0

Я использовал attr, потому что в функции show i nedd ассоциировать кнопку нажата другая функция no_show.I'm пытается сделать переключатель. Вы знаете, как я могу это сделать? –

+0

Вы можете в значительной степени получить любой элемент или функцию внутри внешнего обработчика событий, если вы сделаете это правильно. Как именно делать то, что вы хотите сделать, невозможно ответить, не зная, что именно вы пытаетесь сделать? – adeneo

+0

У меня есть кнопка, и эта кнопка при первом нажатии должна показывать элемент, а при втором нажатии должен скрывать элемент и как только –

2

Элемент как onclick выполняются в глобальном масштабе. Функция show не существует в глобальной области. Вам нужно прикрепить ссылку на свойство функции onclick, а не строку для его атрибута. В JQuery вы можете сделать это с помощью метода on (среди прочих):

$('.button').on('click', show); 

function show(){ 
    alert(this); 
} 
Смежные вопросы