【发布时间】:2015-10-29 19:01:27
【问题描述】:
这是一个菜鸟问题,所以我提前道歉。基本上我有一堆这些小代码sn-ps:
$('#botBox').on('click', '#quest11',function(){
$("#divContent1").hide().html(quest11).fadeIn(500);
});
$('#botBox').on('click', '#quest12',function(){
$("#divContent1").hide().html(quest12).fadeIn(500);
});
$('#botBox').on('click', '#quest13',function(){
$("#divContent1").hide().html(quest13).fadeIn(500);
});
正如您所见,它基本上是一遍又一遍的相同代码,我想创建一个 .each 函数而不是一堆冗余代码。
它所指的标记:
<p id="quest11" class="quest">C'est quoi?</p>
<p id="quest12" class="quest">Avantages</p>
它所指的字符串:
var quest11 = "blah blah";
var quest12 = "blah blah blah";
以此类推。
这是我想出的:
$(".quest").each(function(){
$('#botBox').on('click','#' + $(this).attr("id"),function(){
$("#divContent1").hide().html($(this).attr("id")).fadeIn(500);
});
});
这样做的问题是 .html() 输出将完全是作为字符串的 ID。换句话说,quest12 的输出将是“quest12”而不是“blah blah blah”。
在本例中,我将如何将 quest12 解释为变量 quest12 而不是字符串?
【问题讨论】:
-
您是否专门使用 .each() 来学习如何在这种情况下使用它?您可以为所有这些创建一个类,并使用 $(this).attr(id) 轻松执行您想要的功能以获取点击项目
-
您误解了 .each 函数,它是为了迭代一组事物,所以假设您想从每个具有 quest.void 类的 div 中获取所有 id 的答案如下应该做你想做的事。
-
请不要使用
$(this).attr("id"),DOM 发送过来就好了。this.id要简单得多。 -
任务编号,求数组。也许使用数组会使解决方案更清晰?
标签: javascript jquery html dry