在jQuery中使用appendTo的问题

时间:2011-07-15 14:16:00

标签: javascript jquery-plugins jquery

为什么在点击'.list_name p a'appendTo之后的代码中有几个结果?

  

喜欢:
所有结果是:salsh,   salasi,salaso,salal
当点击on- salshh - >显示(.appendTo) - > salsh,   salasi,salaso,salal
当点击on- salasi - >显示(.appendTo)    - > salasi,salaso,salal
当点击 - salaso - >显示(.appendTo) - > salaso,salal
当点击 - salal - >显示(.appendTo) - > salal

我只想附加点击的值,没有多个值。

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').click( function(event) {
                            event.preventDefault();
                            $('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo('.auto_box span');
                        })
///////////////////////////////////////////

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

2 个答案:

答案 0 :(得分:1)

在$ .each循环中,您将选择每个循环上的所有元素。并反复绑定相同元素上的多个单击手柄。

$('.list_name p a').click( function(event) { ... } );

你应该尝试类似的东西:

var link = $('<p><a href="" id="result">' + b + '</a></p>');
link.click(function(e){ ... });
link.appendTo($(".list_name"));

答案 1 :(得分:0)

您的选择器选择类auto_box span的所有元素。
如果您想获取被点击的项目,请使用$(this)

$('<b>' + b + '، </b><input type="text" name="hotel[]" value="' + b + '" style="border: none; display: none;" />').appendTo($(this));