Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 通过动态生成的li onclick将参数发送到函数_Jquery_Ajax - Fatal编程技术网

Jquery 通过动态生成的li onclick将参数发送到函数

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

现在我知道了ODDOM和数据绑定的概念,我很清楚我的问题,问题是如何解决它

我在一个ul中设置了一组li,由ajax上的服务器响应动态生成,现在我需要做的是在每个li上添加一个接受两个参数的函数这是我的ajax代码

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);
        });