Javascript jQuery:无法按数据查找元素

Javascript jQuery:无法按数据查找元素,javascript,jquery,twitter-bootstrap,Javascript,Jquery,Twitter Bootstrap,我一直在使用AJAX构建一个表,以获取表的内容。为了浏览它的页面,我使用了bootstrap的分页组件。分页也是用js构建的,元素插入到这个循环中: for (i = 1; i <= pageCount; i++) { var li = $("<li>"); li.append($("<a>").attr("href", "#").data("page", i).html(i)); li.appendTo("ul.pagination"); } // e

我一直在使用AJAX构建一个表,以获取表的内容。为了浏览它的页面,我使用了bootstrap的分页组件。分页也是用js构建的,元素插入到这个循环中:

for (i = 1; i <= pageCount; i++) {
  var li = $("<li>");
  li.append($("<a>").attr("href", "#").data("page", i).html(i));
  li.appendTo("ul.pagination");
} // end for (i = 1; i <= pageCount; i++)
不幸的是,在“单击”处理程序中使用
$(this)
不是一个选项,因为我在其他地方也需要它。
所以我改变了我在这里找到的解决方案:
这对我不起作用(我尝试了一些变体):

当我试图在控制台中检查结果元素时,我总是没有得到任何结果

我找到了一个解决方法,使用。每个:

$('ul.pagination li a').each(function(index, element) {
  if ($(this).data("page") == page) {
    $(this).parent().addClass("active");
  }
});
但是这让我很头疼,因为a)这个解决方案不是很优雅,可能速度较慢;b)我无法找出我做错了什么。

jQuery
。data()
和HTML属性
data-***
不一样

因此,如果您想使用此选项:

$('ul.pagination li a[data-page="' + page + '"]').parent().addClass("active");
您必须将循环更改为:

for (i = 1; i <= pageCount; i++) {
  var li = $("<li>");
  li.append($("<a>").attr("href", "#").attr("data-page", i).html(i));
  li.appendTo("ul.pagination");
} // end for (i = 1; i <= pageCount; i++)

for(i=1;我感谢您澄清这一点。我认为,因为存储在data-***中的值可以通过.data()访问,所以这将在两个方向上工作。
$('ul.pagination li a[data-page="' + page + '"]').parent().addClass("active");
for (i = 1; i <= pageCount; i++) {
  var li = $("<li>");
  li.append($("<a>").attr("href", "#").attr("data-page", i).html(i));
  li.appendTo("ul.pagination");
} // end for (i = 1; i <= pageCount; i++)