Почему я получаю ошибку jQuery "TypeError: $(...). Live не является функцией" в следующем сценарии?

На самом деле я пытаюсь реализовать функциональность автозаполнения в одно текстовое поле, но получаю вышеуказанную ошибку, не могу понять, почему я получаю эту ошибку. Можете ли вы помочь мне в решении этой ошибки? Для вашей справки я предоставляю весь необходимый код ниже:

отчетно-студент-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>

Пожалуйста, помогите мне решить эту ошибку. Спасибо заранее.

Ответ 1

live() был удален с версии 1.9 и устарел с версии 1.7:

Вам будут нужны on() сейчас дни

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

где #friends доступно в DOM. Вы не можете привязать on() к динамически загруженному элементу.

Ответ 2

Вы можете использовать .on() вместо .live() (устаревший после JQuery 1.7)

$(document).on('event', 'selector', function() {}); заменяет .live().

Например:

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

Ответ 3

Live() удален с версии 1.9 из jquery. Используйте on