Javascript Jquery仅按数据属性滚动到不带ID的元素
我希望页面向下滚动到我的“容器”-li,它包装了我当前的元素。li没有id属性,不能用于HTML验证。每个li都有一个名为:data commentid的数据属性。该属性包含GUID,是绑定滚动时要使用的。 如何仅使用元素的数据属性滚动到元素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
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
)就像一个魔咒一样工作 它与选择器无关。如果有一个元素,它将滚动到它。你能看到我的代码有任何缺陷吗?因为它现在没有滚动,而且元素存在于schangeScrollTop
到ScrollTop
@Zevan,所以我试过了,它仍然不起作用。请粘贴HTML代码段好吗?