2017-01-31 92 views
0

我有一些麻煩與jQuery,我想綁定到一個div事件產生綁定變量的方法click事件

myArray = [ {name : 'object1', clickMethod : function(){...}}, 
      {name : 'object2', clickMethod : function(){...}}, 
      {name : 'object3', clickMethod : function(){...}} 
     ] 

在我的循環,我想這樣做:

for(var i = 0; i < myArray.length; i++) { 
    Utils.getGeneratedHtml(myArray[i]) 
} 

//Utils.getGeneratedHtml 
Utils.getGeneratedHtml = function(element,selector) { 
    var newE = $('<strong />',{id : element.name}).append(element.name); 
    newE.click(function(){ 
     element.clickMethod() 
    }) 

    newE.appendTo(selector); 
} 

但是看起來這個方法沒有考慮到。我應該使用類嗎?

+0

你不應該命名您的變量'new',它是一個保留關鍵字[標籤:java描述] –

+0

新是一個保留字,嘗試重命名爲其他東西(例如newElement)然後看它是否有效 – ADyson

+0

對不起,例如 – TLR

回答

1

如果您想使用內聯函數,您需要先聲明它,然後才能使用它並使用var來定義它。注意 」。」不允許在JavaScript中使用變量名稱。你也沒有將選擇器參數傳遞給你的getGeneratedHtml函數。見例如:

var myArray = [{ 
 
    name: 'object1', 
 
    clickMethod: function() { 
 
    alert("clicked"); 
 
    } 
 
}, { 
 
    name: 'object2', 
 
    clickMethod: function() { 
 
    alert("clicked"); 
 
    } 
 
}, { 
 
    name: 'object3', 
 
    clickMethod: function() { 
 
    alert("clicked"); 
 
    } 
 
}] 
 

 
var getGeneratedHtml = function(element, selector) { 
 
    var newE = $('<strong />', { 
 
    id: element.name 
 
    }).append(element.name); 
 
    newE.click(function() { 
 
    element.clickMethod() 
 
    }) 
 

 
    newE.appendTo(selector); 
 
} 
 

 
for (var i = 0; i < myArray.length; i++) { 
 
    getGeneratedHtml(myArray[i], "div") 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div></div>

0

首先var new是無效的,應該拋出錯誤,因爲new是關鍵字。

您需要使用直播活動$('static-el').on('event', 'dynamic-el', function)才能使您的代碼正常工作。

+0

實際上,在這種情況下,他不需要on-method,因爲他將事件手動附加到每個生成的元素。這個答案不回答操作問題。 – Esko