Javascript Jquery仅按数据属性滚动到不带ID的元素

Javascript Jquery仅按数据属性滚动到不带ID的元素,javascript,jquery,animation,scroll,data-annotations,Javascript,Jquery,Animation,Scroll,Data Annotations,我希望页面向下滚动到我的“容器”-li,它包装了我当前的元素。li没有id属性,不能用于HTML验证。每个li都有一个名为:data commentid的数据属性。该属性包含GUID,是绑定滚动时要使用的。 如何仅使用元素的数据属性滚动到元素 var container = $("body").find(".roomWall.commentBox.publicListing:first"); var targets = $(container).find("li.commentInLis

我希望页面向下滚动到我的“容器”-li,它包装了我当前的元素。li没有id属性,不能用于HTML验证。每个li都有一个名为:data commentid的数据属性。该属性包含GUID,是绑定滚动时要使用的。 如何仅使用元素的数据属性滚动到元素

var container = $("body").find(".roomWall.commentBox.publicListing:first");
    var targets = $(container).find("li.commentInList.topLevelComment");
    if ($.cookie('scrollTarget')) {
        var cookieValue = $.cookie("scrollTarget").split('"');
        var splittedStr = cookieValue[1];

        $(targets).each(function () {
            var $self = $(this);

            if ($($self).attr("data-commentid") === splittedStr) {
                var target = $("#" + splittedStr);

                $($self).fadeOut("slow").hide().delay(500).queue(function (next) {
                    next();
                }).delay(1000).queue(function (next) {        
                    var $container = $("html,body");
                    $($container).animate({
                        scrollTop: $self.offset().top 
                    }, 1000);
                    next();
                }).delay(1000).queue(function () {
                    $($self).fadeIn(1000);
                    $(target).focus();
                });

                $.removeCookie("scrollTarget", { path: "/" });
            }


        });
    }
cookie包含我想要的GUID。在我的li($self)中有一个id为{Some Guid}的textarea,在本例中,它引用了我的$target变量。由于我没有设法使它与$self.offset().top一起工作,所以我添加了$scrollTo并尝试使用该工具,但也没有成功

关于标记,它相当复杂,所以我只向您展示我们需要的部分,以避免混淆。带有数据注释ID的包装li:

再往下看,我们有:


希望有人能找出我的代码在哪里中断。

我建议使用jQuery的
filter()
,而不是尝试将其串联在一起。我还认为
$(“html,body”)
部分是您需要解决的问题。否则,您的代码实际上是正确的:

var someGuid=“0003”;
var$scrollTo=$(“li.commentInList.topLevelComment”).filter(函数(i){
返回$(this).data('commentid')==someGuid;
});
$(document.body)。设置动画({
scrollTop:$scrollTo.offset().top
}, 1000);
li{
高度:10公分;
}

    注释1 注释2 注释3 注释4 注释5
天哪,我累了。它怎么会向下滚动到淡出的东西?删除了淡入淡出的效果,它(
scrollTop:$self.offset().top
)就像一个魔咒一样工作

它与选择器无关。如果有一个元素,它将滚动到它。你能看到我的代码有任何缺陷吗?因为它现在没有滚动,而且元素存在于schange
ScrollTop
ScrollTop
@Zevan,所以我试过了,它仍然不起作用。请粘贴HTML代码段好吗?