2010-02-08 33 views
6

Với đoạn mã sau đây ... Có thể nói, nếu li được bấm làm điều này nếu không (người dùng bấm vào một nơi khác) làm điều đó? Mã sẽ chỉ làm cho div biến mất nếu người dùng nhấp vào một cái gì đó trong danh sách. Tôi cần nó biến mất nếu họ nhấp vào bất cứ nơi nào khác nữa ... ?? Cảm ơn!jQuery nếu được nhấp?

.bind('blur', function() { 
    $('#search_suggestions_list li').click(function() { 
     var selectedString = $(this).text(); 
     $('#search-box').val(selectedString); 
     setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 
    }) 
}) 

Trả lời

8
$(document).click(function(){ 
    //user clicked anywhere on the page 
}); 

$('#search_suggestions_list li').click(function() { 
    //user clicked on the li 
    return false; 
}); 

Hãy chắc chắn để trả về false, nếu không sự kiện tài liệu nhấp chuột sẽ được gọi là tốt.

+0

$ (document) .click() sẽ luôn luôn bắn vào bất kỳ nhấp chuột – hunter

+7

Bằng cách trả về false , bạn ngừng bong bóng, vì vậy chức năng document.click sẽ không được chạy. Tôi có thể đã hiểu lầm câu hỏi, nhưng âm thanh với tôi như những gì anh ta yêu cầu. – munch

+0

+1 điều này sẽ hoạt động nếu bạn thêm '$ ('# search_suggestions_list'). Hide()' hoặc một cái gì đó tương tự trong sự kiện nhấp tài liệu và/hoặc xóa thời gian chờ hiển thị các đề xuất tìm kiếm. –

0
$('#search_suggestions_list li').click(function() { 
    var selectedString = $(this).text(); 
    $('#search-box').val(selectedString); 
    setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 
}) 

$('#search-box').blur(function(){ 
    // do something else 
}); 
3

Xử lý sự kiện nhấp trên tài liệu, sau đó xử lý sự kiện nhấp trên li. Bên trong sự kiện click cho li, sử dụng stopPropogation chức năng để ngăn chặn các tài liệu (mẹ) nhấp vào sự kiện từ bắn ...

$(document).click(function() { 
    // Clicked outside the LI 
}); 

$('#search_suggestions_list li').click(function(e) { 
    var selectedString = $(this).text(); 
    $('#search-box').val(selectedString); 
    setTimeout("$('#search_suggestions').fadeOut('fast');", 200); 

    e.stopPropagation(); // Stops document.click from firing 
}) 
Các vấn đề liên quan