2011-08-30 157 views
2

爲什麼不能正常工作? --- HTML --------問題| jquery插件創建問題

<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); 

任何解決方案,或更好的方式來做同樣的事情?

+2

**什麼是不工作呢?**對不起,我的憤怒,但我因此對於只是發佈代碼並問「爲什麼這不起作用」的「問題」感到厭煩;你會得到什麼樣的錯誤,你會得到什麼樣的行爲以及你想要什麼樣的行爲? – Bojangles

回答

1

click更改爲delegate,因爲您正在創建hello元素。以下是更新的代碼。另外功能拼寫錯誤,

Live Demo

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

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

個人,這是我會怎麼寫呢:

Updated Demo

$.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()

我還建議檢查一下plugin authoring reference一些很好的提示。

1

由於您使用$.fn.myPlugin定義了該插件,因此您必須選擇插件才能使用的元素。如果你希望該插件在您使用它的方式進行工作,

$.myPlugin = function(){ 
    // your code here 
} 
0

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();