Jquery 通过动态生成的li onclick将参数发送到函数
现在我知道了ODDOM和数据绑定的概念,我很清楚我的问题,问题是如何解决它 我在一个ul中设置了一组li,由ajax上的服务器响应动态生成,现在我需要做的是在每个li上添加一个接受两个参数的函数这是我的ajax代码Jquery 通过动态生成的li onclick将参数发送到函数,jquery,ajax,Jquery,Ajax,现在我知道了ODDOM和数据绑定的概念,我很清楚我的问题,问题是如何解决它 我在一个ul中设置了一组li,由ajax上的服务器响应动态生成,现在我需要做的是在每个li上添加一个接受两个参数的函数这是我的ajax代码 success: function(data){ //console.log(data); //var JSONObject = JSON.parse(data); //console.log(JSONObj
success: function(data){
//console.log(data);
//var JSONObject = JSON.parse(data);
//console.log(JSONObject);
var list = $("#suggesstion-box").append('<ul id="country-list"></ul>').find('ul');
for (i = 0; i < data.length; i++) {
list.append("<li class='clickfunction' onclick=clickfunction("+data[i].lead_id+","+data[i].value+")>"+data[i].value+"</li>");
}
$("#suggesstion-box").show();
$("#suggesstion-box").html(list);
$(".search-box").css("background","#FFF");
}
现在这个工作很好,问题是参数!因为当我们调用javascript的普通函数时,我们可以将参数传递给它们,但在这种情况下,我们可以将参数传递给live函数吗?或者还有其他更好的方法吗?您可以这样做:
for (i = 0; i < data.length; i++) {
var li = $('<li>'); // create new <li> element
li.text(data[i].value); // set text, class, whatever you want
li.on('click', function () { // bind to click event on in
console.log(data[i]); // do what you want with the data
});
list.append(li); // append to the list
}
这样,您根本不需要现场通话。顺便说一句,早在v1.7版之前,人们就不推荐使用live了。你应该改用on
尝试使用属性:
success: function(data){
//console.log(data);
//var JSONObject = JSON.parse(data);
//console.log(JSONObject);
var list = $("#suggesstion-box").append('<ul id="country-list"></ul>').find('ul');
for (i = 0; i < data.length; i++) {
list.append("<li class='clickfunction' lead-id='" + data[i].lead_id + "' lead-value='" + data[i].value + "'>"+data[i].value+"</li>");
}
$("#suggesstion-box").show();
$("#suggesstion-box").html(list);
$(".search-box").css("background","#FFF");
}
$('.clickfunction').live('click', function(){
var lead_id = $(this).attr("lead-id");
var lead_value = $(this).attr("lead-value");
console.log(lead_id + " - " + lead_value);
});
太完美了!我讨论了属性的概念,但无法正确地实现它,只有一个问题,我们可以定义任意多的属性吗?就像在本例中,我们创建了lead id等?是的,您可以创建任意多的属性。为什么我的问题的否决票看起来很好且独特!暂停我的帐户:/
success: function(data){
//console.log(data);
//var JSONObject = JSON.parse(data);
//console.log(JSONObject);
var list = $("#suggesstion-box").append('<ul id="country-list"></ul>').find('ul');
for (i = 0; i < data.length; i++) {
list.append("<li class='clickfunction' lead-id='" + data[i].lead_id + "' lead-value='" + data[i].value + "'>"+data[i].value+"</li>");
}
$("#suggesstion-box").show();
$("#suggesstion-box").html(list);
$(".search-box").css("background","#FFF");
}
$('.clickfunction').live('click', function(){
var lead_id = $(this).attr("lead-id");
var lead_value = $(this).attr("lead-value");
console.log(lead_id + " - " + lead_value);
});