2011-10-23 28 views
11

Tôi muốn chèn một cái gì đó bên trong cửa sổ phương thức bằng cách sử dụng Ajax, vì vậy tôi đã cố mở thủ công cửa sổ phương thức. Mã này trông như thế nàyTwitter Bootstrap cửa sổ kiểu hiển thị flickers

$(function(){ 
     $('#modal-from-dom').modal({ 
      backdrop: true, 
      keyboard: true 
     }); 
     $('#modalbutton').click(function(){ 

      $('#my-modal').bind('show', function() { 
       // do sth with the modal 
      }); 
      $('#modal-from-dom').modal('toggle'); 

      return false; 
     }); 
    }); 

HTML được sao chép trực tiếp từ bootstrap js trang

<div id="modal-from-dom" class="modal hide fade"> 
    <div class="modal-header"> 
     <a href="#" class="close">×</a> 
     <h3>Modal Heading</h3> 
    </div> 
    <div class="modal-body"> 
     <p>One fine body…</p> 
    </div> 
    <div class="modal-footer"> 
     <a href="#" class="btn primary">Primary</a> 
     <a href="#" class="btn secondary">Secondary</a> 
    </div> 
</div> 
<button id="modalbutton" class="btn">Launch Modal</button> 

Vì vậy, vấn đề là cách nhấn vào nút lần đầu tiên dường như chỉ làm việc tốt, sau khi thứ hai nhấp vào modal cửa sổ hiển thị trong 1 giây hoặc lâu hơn và sau đó biến mất. Nếu tôi thay đổi 'toggle' thành 'show', sau lần nhấp thứ hai, phông nền sẽ không phai mờ hoàn toàn. Làm thế nào tôi có thể gỡ lỗi này?

+0

là '.modal() 'một plugin của một số loại? '# My-modal' là gì và bạn đang làm gì với nó? Có khả năng vấn đề là bạn đang ràng buộc 'show' sự kiện trên mỗi nhấp chuột và nó làm một cái gì đó mà ốc vít của bạn bật lên. –

+0

Câu hỏi này đã bị đóng. Tôi đã cập nhật mã trong câu hỏi. – shenyl

+8

Vui lòng đăng giải pháp của bạn. – JSuar

Trả lời

2

Cách bạn hiện đang thực hiện hành động có thể là nguyên nhân gây nhấp nháy. Về cơ bản, những gì bạn đang nói với trình duyệt là: cập nhật nội dung sau khi div được hiển thị. Bạn cũng đang nói với jQuery để ràng buộc sự kiện onShow MỌI thời gian liên kết được nhấp. Tuyên bố ràng buộc đó phải được thực hiện bên ngoài sự kiện onClick.

Những gì bạn nên thử, là thay đổi nội dung phương thức của bạn TRƯỚC KHI hiển thị nó, cho phép trình duyệt điều chỉnh DOM một cách thích hợp trước khi hiển thị nó, giảm (nếu không loại bỏ) nhấp nháy.

Hãy thử một cái gì đó như thế này:

$(function(){ 
    $('#modal-from-dom').modal({ 
     backdrop: true, 
     keyboard: true 
    }); 
    $('#modalbutton').click(function(){ 

     // do what you need to with the modal content here 

     // then show it after the changes have been made 

     $('#modal-from-dom').modal('toggle'); 
     return false; 
    }); 
}); 
+0

Xin chào, câu trả lời của bạn đã giúp tôi rất nhiều. Vấn đề là khi tôi muốn đóng cửa sổ bật lên, nó không chuyển đổi trở lại - nhưng chỉ biến mất ngay lập tức và không suôn sẻ. Bạn có thể giúp tôi với điều này không? –

Các vấn đề liên quan