Javascript Jquery-each()eq()单击()
我想获取从HTML5接收到的两项数据,并在单击函数和其中的函数中使用它们 我遇到了一个问题,以下是我目前的代码:Javascript Jquery-each()eq()单击(),javascript,jquery,click,each,var,Javascript,Jquery,Click,Each,Var,我想获取从HTML5接收到的两项数据,并在单击函数和其中的函数中使用它们 我遇到了一个问题,以下是我目前的代码: var test = []; // This is a div class .quiz_list_row the ids are counted as #1 #2 #3... $(".quiz_list_row").each(function(index){ // Gets the data necessary // It comes from data-quiz
var test = [];
// This is a div class .quiz_list_row the ids are counted as #1 #2 #3...
$(".quiz_list_row").each(function(index){
// Gets the data necessary
// It comes from data-quizlist-id (HTML5)
$quiz_list_id = $(this).eq(index).data("quizlistId");
// It comes from data-quizlevel-reached (HTML5)
$quiz_level_reached = $(this).eq(index).data("quizlevelReached");
test[index] = $quiz_list_id;
// testing
alert("quiz_list_id: " +$quiz_list_id);
alert("level: "+$quiz_level_reached);
// click functions
$(this).click(function(){
// bla bla
// alert(test[index]) ???
});
});
在单击事件周围使用闭包
// testing
alert("quiz_list_id: " + $quiz_list_id);
alert("level: " + $quiz_level_reached);
// click functions
(function(num) {
$(this).click(function() {
alert(test[num]) ? ? ?
});
})(index);
});
您误用了.eq()
。试试这个(我已经删除了对.eq()
的调用):
您可能只需要以下内容:
$(".quiz_list_row").click(function(){
var $quiz_list_id = $(this).data("quizlistId");
var $quiz_level_reached = $(this).data("quizlevelReached");
alert("quiz_list_id: " +$quiz_list_id);
alert("level: "+$quiz_level_reached);
});
你试过了吗?你有什么问题?@SLaks我试了一下,得到了第一排结果,但没有得到第二排,依此类推..我成功地得到了结果。但是它们是颠倒的,这很奇怪,因为html中的“数据”字段中有有序的数据!我将发送另一个问题。
$quick\u list\u id
和$quick\u level\u达到的
未在第一个代码块上定义。@RicardoLohmann这是修改后的操作代码(只需删除.eq(索引)
)。第二块是修订/重构的解决方案。我确实需要each,因为我想从每一行获取数据。感谢您提供有关eq()的提示!我仍然有一个问题,以获得每一行的结果=/
$(".quiz_list_row").click(function(){
var $quiz_list_id = $(this).data("quizlistId");
var $quiz_level_reached = $(this).data("quizlevelReached");
alert("quiz_list_id: " +$quiz_list_id);
alert("level: "+$quiz_level_reached);
});