我在网站上有以下结构:
<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。
答案 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.
}