2013-09-06 3 views
1
for (var i=0; i<data.length; i++){ 
    $("#menu").append("<button onclick='select_food("+data[i]['id']+","+data[i]['name']+")'>Select</button>)") 
} 
function select_food(id, name){ 
    //do something 
} 

이 코드에는 구문 오류가 있습니다. select_food 함수를 호출하는 각 버튼에 대해 두 개의 매개 변수를 전달하려면 어떻게해야합니까?
감사합니다. 매개 변수 name 그것이 ""에 동봉해야하는 문자열처럼 보이는 때문에Jquery에서 여러 매개 변수를 전달합니다.

답변

3

는 오래된 기능 select_food는 전역 범위에서 사용할 수 있는지 확인해야합니다 추악한) 이벤트 연결 방법. data 속성을 사용하여 필요한 정보를 저장하고 jQuery로 이벤트를 첨부하십시오. 이런 식으로 뭔가 :

$('#menu').on('click', 'button', function() { 
    var id = $(this).data('id'); 
    var name = $(this).data('name'); 

    // do something... 
}); 

for (var i = 0; i < data.length; i++){ 
    $("#menu").append('<button data-id="' + data[i]['id'] + '" data-name="' + data[i]['name'] + '">Select</button>') 
} 
+0

이 좋은 제안을위한 로리을 주셔서 감사합니다. –

1

도 있습니다 (onclick 속성을 사용하여

for (var i=0; i<data.length; i++){ 
    $("#menu").append('<button onclick="select_food("' + data[i]['id'] + '","' +data[i]['name'] + '")>Select</button>)') 
} 
function select_food(id, name){ 
    //do something 
} 
0

여기에 가능한 솔루션이다 (여기 http://jsfiddle.net/gDNTw/2/ 바이올린 참조)

$('#menu').on('click', 'button', function() 
{ 
    var id = this.id; 
    var name = this.name; 

    alert(id + ':' + name); 
    // do something... 
}); 

for (var i = 0; i < data.length; i++) 
{ 
    $("#menu").append('<button id="' + i + '" name="' + data[i] + '">Select</button>') 
} 
관련 문제