为什么在点击标签<;a>;,页面刷新而不工作appendTo


why after click on tag <a>, page refresh and not work appendTo?

标签a是$.each((。请参阅我的js代码:

 $('.auto_complete').keyup(function () {
                var id = '#' + this.id;
                var alt = $(id).attr('alt'); var id = $(this).attr('id'); var name = $(this).attr('name');
                var url = alt + id + '/' + name;
            var dataObj = $(this).closest('form').serialize();
            $.ajax({
                type: "POST",
                url: url,
                data: dataObj,
                cache: false,
                dataType: 'json',
                success: function (data) {
                    $(".list_name").show().html('');            
                    $.each(data.name, function(a,b){
                        $(".list_name").append('<p><a href="" id="result">' + b + '</a></p>');
    ////////////////////here/////////////////////
                        $('.list_name p a').live('click', function(e) {
                                    e.preventDefault();
                                    $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo('.auto_box span');
                                    $(this).remove();
                                return false;
                                });
    /////////////////////////////////////////////
                    });
                    if($('.auto_complete').val()==''){
                        $(".list_name p").hide().remove()
                    }
                    $('body').click(function(){
                            $(".list_name p").hide().remove();
                            $('.auto_complete').val('');
                        });
                },
                "error": function (x, y, z) {
                    // callback to run if an error occurs
                    alert("An error has occured:'n" + x + "'n" + y + "'n" + z);
                }
                });
            });

php:(我使用代码点火器(

function search_hotel(){
            $search_term = $this->input->post('search_hotel');
            $query = $this->db->order_by("id", "desc")->like('name', $search_term)->get('hotel_submits');
            $data = array();
            foreach ($query->result() as $row)
            {
               $data[] = $row->name;
            }
            echo json_encode(array('name' => $data));
    // echo: {"name":["333333","'u0633'u0644","'u0633'u0644'u0627'u0633'u06cc","'u0633'u0644'u0627'u0633'u0633","'u0633'u0644'u0627'u0645"]}
        }

如何处理解决方案可能取决于您在事件方面附加到链接的其他内容。我会这样尝试:

$('.list_name p a').live('click', function() {
    $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" />').appendTo('.auto_box span');
    $('.list_name p a').remove();
    return false;
});

我创建了一个jsFiddle作为示例,它似乎运行得很好。如果您仍在提交表单,那么代码中可能存在其他语法错误,或者与元素相关的其他事件干扰或阻止了所需行为的发生。

因为没有附加事件。为什么?你必须调试它…你的浏览器Javascript控制台中有错误吗?可能由于某些错误而停止了解析。

也许您没有选择正确的元素(list_name或listname(。。。等

更新
您使用的是什么版本的jQuery
您可以将事件的绑定放置在AJAX调用之外进行测试。它也应该这样工作
你也可以尝试将它附加到parent.list_name,事件会弹出,这样做更有效。控制台日志中有错误吗?

试试这个

$('.list_name p a').live('click', function(e) {
                            e.preventDefault();

var b="defineIt";$(''+b+'''(.appendTo('.auto_boxspan'(;$(this(.remove((;return false;});