jQuery clone()方法綁定事件


先看如下代碼:

 1 (function ($) {
 2 
 3     var div = $("<div></div>").css({width: "100px", height: "100px"});
 4     var colors = ["red", "blue", "yellow"];
 5     for (var c = 0; c < colors.length; c++) {
 6         var perDiv = div.clone();
 7         perDiv.css({
 8             background: colors[c]
 9         });
10         perDiv.click(function () {
11             console.log(colors[c]);
12         });
13         $("body").append(perDiv);
14     }
15 
16 })($);

效果圖:

無論點擊那個div都是輸出 underfined

所以此代碼不能解決每個div點擊出現不同的事件。

改進代碼:

 1 (function ($) {
 2 
 3     var div = $("<div></div>").css({width: "100px", height: "100px"});
 4     var colors = ["red", "blue", "yellow"];
 5     for (var c = 0; c < colors.length; c++) {
 6         var perDiv = div.clone();
 7         perDiv.css({
 8             background: colors[c]
 9         });
10         perDiv.addClass("a"+c);
11         $("body").append(perDiv);
12     }
13 
14     for (var e=0;e<colors.length;e++){
15         $(".a"+e).click(function () {
16             console.log($(this));
17         });
18     }
19 })($);

效果:

如圖,每當點擊一個對應就輸出一個信息。

總結:給每個元素添加個class或id 就行了╮(╯▽╰)╭

 

補充:2016-09-24

先看代碼:

 1 $(function () {
 2 
 3     var colors = ["red", "blue", "green"];
 4     var div = $("<div></div>").css({width: "100px", height: "100px"});
 5 
 6     for (var i = 0; i < colors.length; i++) {
 7         var odiv = div.clone();
 8         $("body").append(odiv);
 9         odiv.index = i;
10         odiv.css({background: colors[odiv.index]});
11     }
12 });

效果圖:

看效果和上面一樣。

這個的好處:沒有添加類名,還實現了  "有分別"

思路:通過給odiv附加個屬性index來保存與其他odiv的不同

感覺這樣寫 高大上 有木有。。

補充:2016-11-30 10:07:36

 1    var colors = ["red", "blue", "green"];
 2         var div = $("<div></div>").css({width: "100px", height: "100px"});
 3         function cloneDiv(num) {
 4             for (var i = 0; i < num; i++) {
 5                 var odiv = div.clone();
 6                 odiv.css("background", colors[i]);
 7                 $("body").append(odiv);
 8                 odiv.on("click", function () {
 9                     console.log(this);
10                 })
11             }
12         }
13         cloneDiv(colors.length);

運用this,實現不同。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM