2010-12-31 15 views
7

Tôi xin lỗi trước thời hạn nếu đây là một câu hỏi đơn giản, tôi có mã này javascript:jQuery thấy div và sau đó Disappearing

$(document).ready(function() { 
    $("#results").hide(); 

    var html = $.ajax({ url: "ajax.php?db_list=get", async: false}).responseText; 

    $("#submit").click(function() { 
     $("#results").show(); 
    }); 
}); 

Tôi có một nút trông này:

<fieldset class="action"> 
     <button name="submit" id="submit">Submit</button> 
</fieldset> 

Khi Tôi nhấp vào nút Gửi Tôi muốn hiển thị kết quả div và giữ nó ở đó, nhưng trong Chrome nó bật lên và sau đó ngay lập tức biến mất, điều này là do hàm hide() ở đầu tài liệu của tôi đã sẵn sàng chưa?

Cảm ơn!

Trả lời

15

... là do hàm hide() ở đầu tài liệu của tôi đã sẵn sàng chưa?

Có thể. Tôi đoán trang đang làm mới. Nếu bạn không muốn điều đó, hãy sử dụng return false; trong trình xử lý.

$("#submit").click(function() { 
    $("#results").show(); 
    return false; 
}); 

hoặc event.preventDefault().

$("#submit").click(function (event) { 
    $("#results").show(); 
    event.preventDefault(); 
}); 
+0

Cảm ơn bạn đây là vấn đề, trả về false giữ div mở, –

+1

Cảm ơn bạn, trả lại false đã làm cho các trick cho tôi (div của tôi sẽ hiển thị rất nhanh, sau đó ẩn ... Tôi đã sử dụng chuyển đổi ()). Tại sao điều này và tại sao trả về false sửa lỗi này? – DnfD

1

có kết quả của bạn ban đầu thiết lập để được ẩn qua CSS

/* CSS */ 
#results { 
    display: none; 
} 

Không chắc lý do tại sao bạn đang nhảy xung quanh theo cách bạn nên sử dụng $ .ajax. Sử dụng $ .get nếu đó là yêu cầu GET ... Liên kết với .live vì nó tốt hơn :). Let it be async bởi vì bạn không muốn máy chủ của bạn treo trong trường hợp có lỗi ...

$(document).ready(function() { 
    $('#submit').live('click', function(){ 
    $.get('ajax.php?db_list=get', function(data){ 
     $('#results').html(data); 
     $('#results').show(); 
     return false; 
    }); 
    }); 
}); 
+0

Điều này thực sự không phải là một tình huống mà '.live()' nên được sử dụng. Đối với một trình xử lý duy nhất trên một phần tử duy nhất có sẵn khi tải trang, bạn nên liên kết trực tiếp. – user113716

+0

cách tôi đọc câu hỏi, tôi nghĩ rằng ông đã tải nội dung này lên trang khác thông qua ajax, trong trường hợp này là .live necessay – sethvargo

+0

Ah, tôi thấy bây giờ. Cá nhân tôi vẫn sẽ không sử dụng 'live() 'trong tình huống đó, nhưng nó sẽ là một cách tiếp cận. Câu trả lời của bạn có ý nghĩa hơn với tôi bây giờ. : O) – user113716

-1

Thay vì gửi, sử dụng mã này

<input id='submitMe' type = 'button' value = 'Submit Me' /> 

Bây giờ bạn không cần phải return false; hoặc event.preventDefault(); trong javascript của bạn

+0

Ngẫu nhiên, '' "đã được thay thế trong HTML5 bởi các yếu tố ''