Вопрос | Проблема создания плагина Jquery - PullRequest
2 голосов
/ 30 августа 2011

Почему это не работает?--- HTML --------

<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
<script type="text/javascript" src="j.js"></script>
</head>
<body>
<script>
$(document).ready(function(){
$.createHello();
});
</script>
</body>
</html>

--- JS --------- j.js -------

(function($){  
 $.fn.createHello= function() {  
    $('body').append('<div id="hello">Hello world</div>');
    $('#hello').click(funciton(){
    alert("Hello you clicker");
    });
 };  
})(jQuery); 

Какие-нибудь решения или лучшие способы сделать то же самое?

Ответы [ 3 ]

1 голос
/ 30 августа 2011

, так как вы определили плагин с помощью $.fn.myPlugin, вы должны выбрать элемент для плагина для работы с ним. Если вы хотите, чтобы плагин работал так, как вы его используете, определите его с помощью

$.myPlugin = function(){
  // your code here
}
1 голос
/ 30 августа 2011

Измените click на delegate, поскольку вы создаете элемент hello на лету. Ниже обновленный код. Также функция была написана с ошибкой,

Демонстрация в реальном времени

 $.createHello = function() {  
    $('body').append('<div id="hello">Hello world</div>');
    $('body').delegate('#hello', 'click', function(){
        alert("Hello you clicker");
    });
 } 

$(document).ready(function(){
    $.createHello();
});

Лично я бы так написал:

Обновленная демоверсия

 $.fn.createHello = function() {  
    $(this).append('<div id="hello">Hello world</div>');
    $(this).delegate('#hello', 'click', function(){
        alert("Hello you clicker");
    });
 } 

$(document).ready(function(){
    $('body').createHello();
});

Это позволяет привязать его к любому элементу на странице и вызвать createHello()

Я также предлагаю проверить справочник по созданию плагинов для некоторых полезных советов.

0 голосов
/ 30 августа 2011

createHello Плагин добавляет div с некоторым содержанием к элементу body. Чтобы прикрепить событие клика, вы должны выбрать элемент и обратиться к нему, используя ключевое слово this внутри кода плагина. Попробуйте что-то вроде этого

Добавьте эту разметку на тестовую страницу

<div id="hello">Click me</div>

JS

 $.fn.createHello= function() {  
    $('body').append('<div id="hello">Hello world</div>');
    this.click(funciton(){
       alert("Hello you clicker");
    });
 };  


$("#hello").createHello();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...