我在jQuery中有以下功能:
WeeklySchedule.prototype.FillSchedule = function(jsonData)
{
for(var i = 0; i < jsonData.ScheduleItems.length; i++)
{
var item = jsonData.ScheduleItems[i];
var itemId = item['TimeScheduleItem']['id'];
var date = item['TimeScheduleItem']['date'];
var employerId = item['Employer']['id'];
var profilePhoto = item['Employer']['profile_photo'];
$('.day .day-indicator#' + date).siblings('.day-schedule').append('<div class="roster-item left" id="' + itemId + '"></div>');
$('.roster-item#' + itemId).append('<img class="profile-photo" id="' + employerId + '" alt="" src="/img/' + profilePhoto + '">');
}
$('.day-schedule').append('<div class="clear"></div>');
}
基本上,此功能会搜索正确的日期并在当天添加照片。添加“roster-item”容器工作正常。但是使用“itemId”找到相同的容器根本不起作用。
使用“$('。roster-item#'+ itemId)”应该返回刚刚创建的div,但它找不到该div,而它存在于html中。
添加div后的部分HTML:
<div id="3" class="day left ui-droppable">
<div id="2014-09-25" class="day-indicator today">Thu 25</div>
<div class="day-schedule">
<div id="3" class="roster-item left"></div>
<div class="clear"></div>
</div>
</div>
添加任何额外的选择器,例如“。day”也不起作用,就像把它放在循环之外一样。它找不到它。
我完全不知道为什么jQuery找不到它。
答案 0 :(得分:1)
如果您对html中的任何元素使用id
,那么它在整个文档中应该是唯一的。并且无需使用id
的任何其他选择器,因此请更改以下代码
$('.day .day-indicator#' + date).siblings('.day-schedule').append('<div class="roster-item left" id="' + itemId + '"></div>');
$('.roster-item#' + itemId).append('<img class="profile-photo" id="' + employerId + '" alt="" src="/img/' + profilePhoto + '">');
到
$('#' + date).siblings('.day-schedule').append('<div class="roster-item left" id="' + itemId + '"></div>');
$('#' + itemId).append('<img class="profile-photo" id="' + employerId + '" alt="" src="/img/' + profilePhoto + '">');
如果您仍然希望将id
选择器与class
selectore一起使用,那么请将id放在第一位然后将类
$('#' + date+'.day .day-indicator').siblings('.day-schedule').append('<div class="roster-item left" id="' + itemId + '"></div>');
$('#' + itemId+'.roster-item').append('<img class="profile-photo" id="' + employerId + '" alt="" src="/img/' + profilePhoto + '">');