我正在开发一个在线测验应用。这些测试按章节划分,每章都有自己的测验。每章都附在一个菜单上,并在菜单上单击,一章加载了一些内容,最后有一个按钮开始测验。
当用户参加测验时,会有一个导航到下一个问题的按钮。在完成最后一个问题时,测验的分数将显示在一个按钮旁边,单击以导航到下一章。这一切都是动态完成的。我想要的是,在这个导航到下一章的按钮上,我传递了这个按钮下一章的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 function
和Uncaught TypeError: $(...)[0].find is not a function
。
简而言之,我如何检索此动态结果的ID:<a href="#signs-giving-orders" id="2" data-menu="2">Signs Giving Orders</a>
答案 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