Tôi có một trường đầu vào, nơi tôi cố gắng thực hiện đề xuất tự động hoàn thành. Mã trông như
<input type="text" id="myinput">
<div id="myresults"></div>
Trong blur()
sự kiện đầu vào, tôi muốn ẩn div kết quả:
$("#myinput").live('blur',function(){
$("#myresults").hide();
});
Khi tôi viết một cái gì đó vào đầu vào của mình, tôi gửi yêu cầu đến máy chủ và nhận được phản hồi json, phân tích nó thành cấu trúc ul-> li và đặt ul này vào #myresults
div của tôi .
Khi tôi nhấp vào phần tử li được phân tích cú pháp này, tôi muốn đặt giá trị từ li thành đầu vào và ẩn #myresults
div
$("#myresults ul li").live('click',function(){
$("#myinput").val($(this).html());
$("#myresults").hide();
});
Mọi thứ đang diễn ra tốt đẹp, nhưng khi tôi nhấp vào blur()
sự kiện li của mình sẽ kích hoạt trước đó click()
và giá trị đầu vào không nhận được html của li.
Làm thế nào tôi có thể thiết lập click()
sự kiện trước blur()
?
blur
thực sự bắn sau khi bạn nhấp vào li
, thì có lẽ bạn không cần phải thực thi $("#myresults").hide()
trong trình xử lý nhấp chuột. Những gì có vẻ như đang xảy ra $(this).html()
là trả về một chuỗi rỗng. Bạn có thể log
hoặc alert
$(this).html()
để chắc chắn?
blur()
và click()
xử lý, không có hành động nào sau khi blur()
kết thúc