检测两个元素在页面上是否具有相同的ID

时间:2016-03-11 09:04:58

标签: javascript php jquery

在页面加载时,从数据库中选择了5个项目。当用户向下滚动时,会加载另外5个帖子,等等。

为了防止在按“新”排序时出现重复的帖子,我将页面加载时间放在隐藏的输入中以便在JavaScript中使用:

<input id="loadTime" type="hidden" value="<?php echo time(); ?>">

然后在滚动时抓取更多帖子我只选择之前的新帖子以防止重复发帖。

WHERE s.date < :loadTime

但是,我的问题是按Hot或Top排序时,因为它不使用相同的逻辑。

是否可以检测页面上的两个元素是否具有相同的ID?因为当重复的帖子附加到页面时,它将具有与其上已有的相同的ID。某种$(window).scroll()有一个函数可以在之后删除重复的ID,以便用户看不到重复的帖子?

3 个答案:

答案 0 :(得分:1)

我能够解决它:

在我添加新帖子后的成功函数中,我遍历页面上的所有ID(取自此answer,然后删除具有该id的最后一个元素。

$('[id]').each(function(){
    var ids = $('[id="'+this.id+'"]');
        if (ids.length>1 && ids[0]==this){
            $("#"+this.id).last().remove();
        }
 });

答案 1 :(得分:0)

如何使用JavaScript请求传递初始加载时间,存储并发送您在上一组5中收到的上一篇文章的ID?

然后,您的服务器端逻辑可以(在事务中)读出&#34; hotness&#34;或&#34; topness&#34;或者创建日期,或者您对用户看过的最后一个帖子进行排序的任何值,然后选择价值低于该帖子值的5个下一个帖子。

答案 2 :(得分:0)

►是否可以检测页面上的两个元素是否具有相同的ID?

  

可以找到具有重复Id的元素。您可以使用属性id的选择。

<强>样本

&#13;
&#13;
if($('[id="same"]').length > 1){
  alert("duplicate id")
}

// To remove last inserted element with duplicate ID
$('[id="same"]').last().remove()
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="same">
<input type="text" id="same">
<input type="text" id="same">
<input type="text" id="same" value="Last element">
&#13;
&#13;
&#13;

相关问题