16

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

报告-学生-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>

请帮我解决这个错误。提前致谢。

4

3 回答 3

27

live()自 1.9 版起已被删除,自 1.7 版起已弃用:

on()你现在会想要的

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

where#friends可以在 DOM 上使用。您不能绑定on()动态加载的元素。

于 2013-10-01T07:59:37.270 回答
7

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

$(document).on('event', 'selector', function() {});替换.live().

例如:

$( document ).on( "click", "#elementId ", function(){  alert( "Do here what you want!" );  // jQuery1.7+    });
于 2013-10-01T08:00:41.073 回答
1

Live() 自 1.9 以来已从 jquery 中删除。请用on

于 2013-10-01T08:00:14.603 回答