【发布时间】:2011-09-29 05:35:15
【问题描述】:
我使用以下代码来检查某个 div 是否存在。如果没有,它会将其添加到 dom 的适当位置。
if (!($("#col"+lastSlide).length))
{
$('#schDisplay').prepend('<div id="col' + (lastSlide) + '"></div>');
}
我的问题是,当这个 if 语句再次检查一个已经被附加/前置的 div 时,它看不到我添加的 div。所以它会继续添加已经前置/附加的 div。
有什么办法可以解决这个问题?
更多代码:
//fillin added column
function fillElement(colnum)
{
var URL = 'schedule.php';
$("#col"+colnum).text("Loading...").show();
$.post(URL,{fecolnum: colnum},
function (data)
{
$("#col"+colnum).html(data).show();
});
}
//...irrelevant code...
// Create event listeners for .arrows clicks
$('.arrows')
.bind('click', function(){
numberOfSlides++;
// Determine new position
if ($(this).attr('id')=='arrow_right')
{
lastSlide++;
currentPosition++;
if (!($("#col"+lastSlide).length))
{
$('#schDisplay').append('<div id="col' + lastSlide + '" class="schColumn" style="float: left; width: ' +slideWidth+ 'px"></div>');
fillElement(lastSlide);
}
}
else
{
lastSlide--;
currentPosition--;
if (!($("#col"+lastSlide-2).length))
{
$('#schDisplay').prepend('<div id="col' + (lastSlide-2) + '" class="schColumn" style="float: left; width: ' +slideWidth+ 'px"></div>');
fillElement(lastSlide-2);
}
}
【问题讨论】:
-
您需要显示更多上下文。我无法从您的问题中看出 '#col'+lastSlide 和 '#schDisplay' 是如何相关的。根据您向我展示的内容,当您添加到 #schDisplay 时,'#col'+lastSlide 完全有可能不会改变。
-
信息不足。请贴出相关代码。
-
我更新了问题并添加了更多代码。我觉得我可能需要在某处使用 .live(),但我不确定正确的语法在哪里或是什么。
-
您说它不断添加 div,但您从不检查相同的 div id 两次。每次单击
.arrows链接时都会增加lastSlide,因此它每次都会添加一个具有新 id 的新 div。 -
它在按下第一个按钮时增加 lastSlide 并在按下第二个按钮时减少 lastSlide。当我递增然后递减时会出现问题,反之亦然。发生这种情况时会添加具有完全相同 ID 的 div。 (我是通过萤火虫看到的)
标签: javascript jquery dom append prepend