Jquery:获取html元素

时间:2017-05-06 09:40:42

标签: javascript jquery

我正在开发一个在线测验应用。这些测试按章节划分,每章都有自己的测验。每章都附在一个菜单上,并在菜单上单击,一章加载了一些内容,最后有一个按钮开始测验。

当用户参加测验时,会有一个导航到下一个问题的按钮。在完成最后一个问题时,测验的分数将显示在一个按钮旁边,单击以导航到下一章。这一切都是动态完成的。我想要的是,在这个导航到下一章的按钮上,我传递了这个按钮下一章的id

这是处理我上面描述的最后一部分的jquery位(click事件处理提交的问题):

$(document).ready(function(){
     $("#page-content-wrapper").on('click', '.questionform #submit', function(e)  
     {
          //more code before this
          var next_chapter = $("a[data-menu='" + next_menu +"']")[0];
          console.log(next_chapter);
     });
});

变量next_chapter包含下一个菜单的整个html链接。即

console.log(next_chapter);

返回:

<a href="#signs-giving-orders" id="2" data-menu="2">Signs Giving Orders</a>

现在我想要的是捕获id并将其传递给按钮值。我已尝试使用.find.attr方法获取ID:

var next_chapter = $("a[data-menu='" + next_menu +"']")[0].attr('id');
var next_chapter = $("a[data-menu='" + next_menu +"']")[0].find('a').attr('id');

但上述两个错误分别为:Uncaught TypeError: $(...)[0].attr is not a functionUncaught TypeError: $(...)[0].find is not a function

简而言之,我如何检索此动态结果的ID:<a href="#signs-giving-orders" id="2" data-menu="2">Signs Giving Orders</a>

2 个答案:

答案 0 :(得分:1)

是的,因为jQuery元素的.attr()方法,而不是原生的

这样做

var next_chapter = $("a[data-menu='" + next_menu +"']")[0].id;

还有一个选择

var next_chapter = $("a[data-menu='" + next_menu +"']")[0].getAttribute('id');

您也可以查看https://www.w3schools.com/jsref/met_element_getattribute.asp

https://developer.mozilla.org/en/docs/Web/API/Element/attributes

答案 1 :(得分:1)

您不需要使用[0],它会返回对本机DOM元素的引用,从而导致错误。

如果要获取属性值,请直接在jQuery对象

上使用.attr()
var next_chapter = $("a[data-menu='" + next_menu +"']").attr('id');
                                                      //Notice [0] is removed