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 #myresultsdiv 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 #myresultsdiv
$("#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()?
blurthự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ể loghoặ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