2013-12-23 5 views
0

Я пытаюсь передать объект JSON функции onclick, но он не работает.Pass JSON object to onclick function

$.each(matches, function() {       
    var item_data = { 
     "category" : this['category_name'], 
     "stock" : this['stock_name'], 
     "supplier_stock" : this['supplier_stock_name'] 
    }; 

    available_stock_items = available_stock_items + '<tr> \ 
     <td>' + this['category_name'] + '</td> \ 
     <td>' + this['stock_name'] + '</td> \ 
     <td>' + this['supplier_stock_name'] + '</td> \ 
     <td align="center"><img src="' + $j('#edit-vardru-base-path').val() + 'sites/all/modules/core/images/add.png" onClick="select_item('+ item_data +');" /></td> \ 
     </tr>'; 
}); 

function select_item(data) 
{ 
    console.log("***********PRINT***************"); 
    console.log(data); 
} 

Я получаю эту ошибку «Неиспользуемый SyntaxError: Неожиданный идентификатор» в окне консоли.

EDIT: Теперь я пытаюсь передать данные (item_data) с помощью делегирования событий. Я добавил следующий код внутри $ .each(). Функция обратного вызова вызывается при событии клика, но я не могу получить доступ к item_data.

$j(document).delegate("#row-"+count, "click", function(item_data){ 
         alert("TEST"); 
         console.log("TEST");        
         console.log(item_data);  
        }); 
+0

это говорит вам, какая линия ошибка на? –

+0

Можете ли вы опубликовать полный пример, как вы его вызываете. Если возможно, добавьте jsfiddle –

+0

Да, нам нужно знать, если вы вызываете 'console.log (data)' или если это происходит раньше. –

ответ

0

Вы можете использовать данные html5 атрибуты

<div id="dataDiv" data-num="">click div</div> 

<script> 
var jsonData = { "name": "name1" }; 

$(document).ready(function() {   
    $("#dataDiv").data("num",jsonData); 
    $("#dataDiv").on("click", function() { 
     console.log($(this).data("num")); 
    }); 
}); 
</script> 
0

Вы не можете вставить в DOM JSON попробовать мой демо HTML

<div id='show_test'> 
</div> 

JQuery

$(document).ready(function(){ 
var matches = [ 
    {"category_name":"category_1","stock_name":"stock_1","supplier_stock":"supplier_stock_1"},{"category_name":"category_2","stock_name":"stock_2","supplier_stock":"supplier_stock_2"}, 
{"category_name":"category_3","stock_name":"stock_3","supplier_stock":"supplier_stock_3"}, {"category_name":"category_4","stock_name":"stock_4","supplier_stock":"supplier_stock_4"} 
    ]; 
    $.each(matches, function(i) { 
    var arrayDt = []; 
    arrayDt[i] = { 
     "category" : this.category_name, 
     "stock" : this.stock_name, 
     "supplier_stock" : this.supplier_stock 
    }; 
    $("#show_test").append("<div><a id='bt_"+i+"'>click</a></div>"); 
    $("#bt_"+i).click(function(){ 
     show_data(arrayDt[i]); 
    }); 
}); 
}); 
    function show_data(data){ 
     alert(JSON.stringify(data)); 
    } 

или увидеть на

http://jsfiddle.net/F6FxB/2/

+0

Я просто обновил свой ответ. – HDT