2011-01-31 53 views
0

我想爲我的web應用程序提供一種方法,允許用戶在他的代碼中的任何位置(腳本標記內)調用我的函數,以顯示淡入/淡出消息。我不知道該怎麼做才能確定我在DOM中的位置,而沒有起始參考點。如何在沒有起始參考點的情況下獲得父節點?

功能:

function displayMessage(message) { 
    // Display a notification if the submission is successful. 
    $('<div class="save-alert">' + message + '</div>') 
     .insertAfter($('')) // Do not know how to know where to put the message. 
     .fadeIn('slow') 
     .animate({ opacity: 1.0 }, 2000) 
     .fadeOut('slow', function() { 
     $(this).remove(); 
    }); 
} 

的HTML:

<!-- Some HTML --> 
<div> 
    <script type="text/javascript"> 
     displayMessage("My message."); 
    </script> 
</div> 
<!-- Some more HTML. --> 
+0

你的意思是你想確定上下文acoording實際腳本代碼被寫入的位置? – 2011-01-31 22:00:11

回答

3

沒有任何可靠的方法來獲取這些信息。您應該做大多數其他庫所做的工作 - 讓用戶將ID或引用元素傳遞給您的函數,以便您可以使用它。

0

您可能想要使用fixed positioning將您的方框放在相對於瀏覽器視口的位置,而不管用戶在文檔中滾動到的位置。

1

除非你想把一個CSS選擇器或一個ID作爲參數,否則也可以創建一個jQuery小部件。這樣,您就可以使用它像:

$("#msgArea").messageWidget("displayMessage"); 

,甚至重複使用多次

$("#msgArea").messageWidget("displayMessage", "message to display"); 

樣品樣板部件:

(function($) { 
    $.widget("ui.messageWidget", { 
     // default options 
     options: { message: undefined}, 
     // constructor 
     _create: function() { 
      if (this.options.message !== undefined) { 
       this.displayMessage(this.options.message); 
      } 
     }, 
     // Displays the message 
     displayMessage: function() { 
      this.element.append("your div's and messages"); 
     }, 
     // Allows constructor/setter arguments 
     _setOption: function(key) { 
      $.Widget.prototype._setOption.apply(this, arguments); 
     } 
    }); 
}(jQuery)); 
1

通常有兩種方式,一是,卡薩布蘭卡注意你在DOM中提供一個div來追加消息。其次,這是我認爲你想要的,就是在DOM本身上創建一個div節點。這樣你就可以完全控制。畢竟它會在你完成後淡出。不妨將它從dom中殺死。這是fancylightbox(我相信很多其他人)對DOM做的事情。您希望將它放在正文的開頭,因此沒有其他包含元素,並且可以根據需要對其進行設置 - 可能會將它像浮動/對話框一樣浮動在頁面中間的某個位置。

相關問題