2011-01-31 66 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做的事情。您希望将它放在正文的开头,因此没有其他包含元素,并且可以根据需要对其进行设置 - 可能会将它像浮动/对话框一样浮动在页面中间的某个位置。

相关问题