为什么在点击'.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);
}
});
});
答案 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));