将javascript分配给某个元素及其子元素

时间:2015-06-02 08:36:32

标签: javascript html

我在网站上有以下结构:

<div class="content">
   <div class="main-content profile1 left">
      <script type="text/javascript">
                $(document).ready(function() {Message.initialMessageList(1);});
      </script>
      <div class="message-menu">
          <div class="message"></div>
      <div>
   </div>
   <div class="main-content profile2 left">
      <script type="text/javascript">
                $(document).ready(function() {Message.initialMessageList(2);});
      </script>
      <div class="message-menu">
          <div class="message"></div>
      <div>
   </div>
</div>

我需要的是在我的Message javascript对象中引用作为配置文件子节点的元素,具体取决于传递的配置文件ID(1或2)。

即当传递1时,我们应该引用作为profile1 div的子节点的div消息菜单,并忽略作为profile2的子节点的消息菜单。

目前部分javascript:

var Message = {
    searchTimeout: null,

    initialMessageList: function(profile_id) {
        var messageContent = document.getElementsByClassName('main-content profile'+ profile_id);
        var messagelist = messageContent[0].getElementsByClassName('messages-list');

        messagelist[0].innerhtml = '<div class="message-loader"><i class="fa fa-spinner fa-spin"></i></div>';

        Message.fetchMessageList(profile_id,  Message.initialMessageListHandler);
    },

    initialMessageListHandler: function(data, profile_id) {
        $('.messages-list .message-loader').remove();
        $('.messages-list').html(Message.getMessageListHtml(data));
        Message.bindMessageList();
        $('.open-message').first().click();
    },

我真正想要的是为所有函数设置一个全局变量,以便知道他们应该引用哪个子元素,而不必在javascript中继续传递配置文件ID。

1 个答案:

答案 0 :(得分:1)

好吧,因为我不知道你的代码应该做什么,只是回答你的主要问题:你可以传递容器而不是传递profile_id。

initialMessageList: function(profile_id) {
    var messageContent = document.getElementsByClassName('main-content profile'+ profile_id)[0];
    messageContent.profile_id = profile_id; //We can keep it just in case:

    var messagelist = messageContent.getElementsByClassName('messages-list');
    messagelist[0].innerhtml = '<div class="message-loader"><i class="fa fa-spinner fa-spin"></i></div>';

    //Message.fetchMessageList(profile_id,  Message.initialMessageListHandler);
    Message.fetchMessageList(messageContent, Message.initialMessageListHandler); //We pass the container instead of the profile_id and have both in the end.
}