Попробуйте правильно подключить прослушиватель, используя прослушиватели событий в Javascript, а не встроенные атрибуты HTML (что так же плохо, как eval
).Также, когда вы используете bind
, первый аргумент - это значение this
, предоставленное функции; второй аргумент .bind
соответствует первому аргументу в другой функции.
function handleProductsClick(product) {
console.log(product && JSON.stringify(product));
}
function buildProducts(products) {
products.forEach(product => {
const li = $('<li>' + product.value + '</li>');
li.on('click', handleProductsClick.bind(null, product));
$("#products").append(li)
});
}
function getProductsFromApi() {
var products = [{
key: 1,
value: "Apple"
},
{
key: 2,
value: "Android"
}
];
buildProducts(products);
}
getProductsFromApi();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="products"></ul>