为什么我在以下场景中收到jQuery错误“TypeError:$(...)。live不是函数”?

时间:2013-10-01 07:55:16

标签: javascript jquery-autocomplete jquery

实际上我正在尝试将自动完成功能实现到一个文本字段但是出现上述错误,无法理解为什么我收到此错误。你能帮我解决这个错误吗?供您参考我将在下面提供所有必要的代码:

报告-学生result.tpl

<link rel="stylesheet" type="text/css" href="{$control_css_url}ui-lightness/jquery-ui-1.10.3.custom.css">  
<link rel="stylesheet" type="text/css" href="{$control_css_url}autocomplete.css">
<label>Name</label>
            <div class="form-element" id="friends">
              <input type="text" class="" name="user_name" id="user_name" value="{$user_name}" />
            </div>

<script language="javascript" type="text/javascript">
$(function(){  

  var class_id = $('#class_id').val();
  var section_id = $('#section_id').val();

        //attach autocomplete  
        $("#user_name").autocomplete({  

            //define callback to format results  
            source: function(req, add){  

                //pass request to server  
                $.getJSON("report_student_result.php?callback=?op=get_student_names&class_id="+class_id+"&section_id="+section_id, req, function(data) {  

                    //create array for response objects  
                    var suggestions = [];  

                    //process response  
                    $.each(data, function(i, val){                                
                    suggestions.push(val.name);  
                });  

                //pass array to callback  
                add(suggestions);  
            });  
        },  

        //define select handler  
        select: function(e, ui) {  

            //create formatted friend  
            var friend = ui.item.value,  
                span = $("<span>").text(friend),  
                a = $("<a>").addClass("remove").attr({  
                    href: "javascript:",  
                    title: "Remove " + friend  
                }).text("x").appendTo(span);  

                //add friend to friend div  
                span.insertBefore("#user_name");  
            },  

            //define select handler  
            change: function() {  

                //prevent 'to' field being updated and correct position  
                $("#user_name").val("").css("top", 2);  
            }  
        }); 
        //add click handler to friends div  
        $("#friends").click(function(){  

            //focus 'to' field  
            $("#user_name").focus();  
        });  

        //add live handler for clicks on remove links  
        $(".remove", document.getElementById("friends")).live("click", function(){  

            //remove current friend  
            $(this).parent().remove();  

            //correct 'to' field position  
            if($("#friends span").length === 0) {  
                $("#user_name").css("top", 0);  
            }                 
        });                      
    });

</script>

请帮我解决此错误。提前谢谢。

3 个答案:

答案 0 :(得分:27)

自版本1.9以来,

live()已被删除,自1.7以来已被弃用:

你现在想要on()

$('#friends').on("click", ".remove", document.getElementById("friends"), function(){  

其中#friends可用于DOM准备就绪。您无法在动态加载的元素上绑定on()

答案 1 :(得分:6)

您可以使用.on()代替.live()(在Jquery 1.7之后弃用)

$(document).on('event', 'selector', function() {});取代.live()

例如:

$( document ).on( "click", "#elementId ", function(){  alert( "Do here what you want!" );  // jQuery1.7+    });

答案 2 :(得分:1)

Live()已从jquery中删除了1.9。请使用on