2013-07-24 68 views
0

我有一個圖標,如果您單擊它,會彈出一個彈出窗口,其中包含從Web服務填充的一些數據。但問題是我想要彈出窗口,只要點擊它,就會消失,只要點擊頁面上的其他任何地方!單擊頁面上的任意位置,彈出窗口應該消失

請讓我知道我該怎麼做? PS:我已經試過觸發:'手動',但它不適用於我的例子!

我在這裏的代碼:

$('#myIcon').click(function (e) { 
    e.preventDefault(); 
    var $this = $(this); 
    $.ajax({ 
       type: "POST", 
       url: "myURL" 
      }).done(function (data) {           
       $this.popover({ 
        placement:'bottom',           
        content: function() { 
         html = "<table class='table table-bordered ' id='myTbl'><tbody id='myTblBody'>"; 
         for (var i = 0; i < data.length; i++) { 
          html = html + "<tr><td>" + data[i]['username'] + "</td></tr>"; 
         } 
         html = html + "</tbody></html>"; 
         return html; 
        }, 
        html: true, 
       }) 
      }); 
}); 
+0

你真的可以讀你自己的代碼嗎? – Virus721

+1

@ Virus721這是奇怪的縮進,但並不是那麼糟糕。如果你要花時間嘲笑它,爲什麼不多做一點,並提出一些可以改進的方法? –

+0

可能是因爲我非常關心提問者關心時間和耐心的問題,所以我們需要閱讀它。 – Virus721

回答

1

你可以試試,如果這對你的作品。

當您顯示彈出窗口時,將隱藏彈出窗口的整個主體添加一次性點擊偵聽器。

$('#myIcon').click(function (e) { 
    e.preventDefault(); 
    var $this = $(this); 
    $.ajax({ 
       type: "POST", 
       url: "myURL" 
      }).done(function (data) {           
       $this.popover({ 
        placement:'bottom',           
        content: function() { 
         html = "<table class='table table-bordered ' id='myTbl'><tbody id='myTblBody'>"; 
         for (var i = 0; i < data.length; i++) { 
          html = html + "<tr><td>" + data[i]['username'] + "</td></tr>"; 
         } 
         html = html + "</tbody></html>"; 
         return html; 
        }, 
        html: true, 
       }); 
       $('body').one('click',function(ev){ 
        ev.preventDefault(); 
        $this.popover('hide'); 
       }); 
      }); 
}); 
+0

好人!它完美地工作!另外爲了顯示彈出窗口,我需要雙擊圖標(一個用於ajax調用,另一個用於彈出窗口,我假設),我可以通過一次點擊彈出窗口來更改它嗎? –

+0

@ShimaMdz我從來沒有使用popover,但你可以試試$ this.popover('show');在您的$ this.popover({....})之後; – Andy

0

popover有一個命名爲hideOnHTMLClick方法,說Hide popovers when clicked outside of them.

$('#myIcon').click(function (e) { 
    e.preventDefault(); 
    var $this = $(this); 
    $.ajax({ 
       type: "POST", 
       url: "myURL" 
      }).done(function (data) {           
       $this.popover({ 
        placement:'bottom', 
        hideOnHTMLClick: true,           
        content: function() { 
         html = "<table class='table table-bordered ' id='myTbl'><tbody id='myTblBody'>"; 
         for (var i = 0; i < data.length; i++) { 
          html = html + "<tr><td>" + data[i]['username'] + "</td></tr>"; 
         } 
         html = html + "</tbody></html>"; 
         return html; 
        }, 
        html: true, 
       }) 
      }); 
}); 
+0

它不適合我! –

+0

另外,爲了顯示彈出窗口,我需要雙擊圖標(一個用於ajax調用,另一個用於彈出窗口,我假設)可以以彈出窗口的方式進行更改嗎? –

相關問題