[英]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 :(我使用的codeigniter)
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控制台中是否有錯誤? 可能由於某些錯誤而停止了解析。
也許您沒有在右邊選擇元素(列表名稱或列表名稱)...等等。
UPDATE
您正在使用哪個版本的jQuery?
您可以將事件的綁定放在AJAX調用之外進行測試。 它也應該那樣工作。
您也可以嘗試將其附加到父.list_name,事件會冒泡,因此這樣做更有效。 控制台日志中是否有任何錯誤?
嘗試這個
$('.list_name p a').live('click', function(e) {
e.preventDefault();
var b =“ defineIt”; $(' '+ b +', ').appendTo('。auto_box span'); $(這)一個.remove(); 返回false; });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.