Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用正确的语法创建.each()函数_Javascript_Jquery_Html_Dry - Fatal编程技术网

Javascript 使用正确的语法创建.each()函数

Javascript 使用正确的语法创建.each()函数,javascript,jquery,html,dry,Javascript,Jquery,Html,Dry,这是一个有点愚蠢的问题,所以我提前道歉。基本上我有一堆这样的小代码片段: $('#botBox').on('click', '#quest11',function(){ $("#divContent1").hide().html(quest11).fadeIn(500); }); $('#botBox').on('click', '#quest12',function(){ $("#divContent1").hide().html(quest12).fadeIn(50

这是一个有点愚蠢的问题,所以我提前道歉。基本上我有一堆这样的小代码片段:

$('#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);
}); 
正如你所看到的,它本质上是一遍又一遍的相同代码,我想创建一个。每个函数,而不是一堆冗余代码

它所指的标记:

               <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”,而不是“诸如此类”

在本例中,我如何使quest12被解释为变量quest12而不是字符串

$("#divContent1").hide().html(window[this.id]).fadeIn(500);
由于全局变量绑定到
窗口
对象

(假设
var questXX
变量是全局变量)

由于全局变量绑定到
窗口
对象

(假设
var questXX
变量是全局变量)

使用

$(".quest").click(function(){
    $("#divContent1").hide().html(window[$(this).attr("id")]).fadeIn(500);
});
$(this).attr(“id”)
只是一个字符串,
窗口[$(this).attr(“id”)]
将返回var的全局值
$(this).attr(“id”)

$(“.quest”).click()
将在类
.quest
的所有元素上注册click事件,因此您不需要使用
。每个

或者,如果风险值是本地的,则改用
eval

$(".quest").click(function(){
    $("#divContent1").hide().html(eval[$(this).attr("id")]).fadeIn(500);
});
使用

$(this).attr(“id”)
只是一个字符串,
窗口[$(this).attr(“id”)]
将返回var的全局值
$(this).attr(“id”)

$(“.quest”).click()
将在类
.quest
的所有元素上注册click事件,因此您不需要使用
。每个

或者,如果风险值是本地的,则改用
eval

$(".quest").click(function(){
    $("#divContent1").hide().html(eval[$(this).attr("id")]).fadeIn(500);
});

您不需要使用
。每个
。可以将处理程序直接绑定到所有元素。然后,要获取元素的ID,可以使用
this.ID

与其使用全局变量
quest11
quest12
,不如将其设置为对象的属性:

var questions = {
    quest11: "blah blah",
    quest12: "blah blah blah"
};


$("#botBox").on("click", "p", function() {
    $("#divContent1").hide().html(questions[this.id]).fadeIn(500);
});

您不需要使用
。每个
。可以将处理程序直接绑定到所有元素。然后,要获取元素的ID,可以使用
this.ID

与其使用全局变量
quest11
quest12
,不如将其设置为对象的属性:

var questions = {
    quest11: "blah blah",
    quest12: "blah blah blah"
};


$("#botBox").on("click", "p", function() {
    $("#divContent1").hide().html(questions[this.id]).fadeIn(500);
});

首先创建一个对象以容纳不同的文本:

var quests = {
  quest11 : "blah blah",
  quest12 : "blah blah blah"
}
然后使用
“[id^=quest]”
“属性以“选择器将所有
quest
元素委托给
botBox
开头

然后,您可以简单地使用
this.id
获取单击的任务的id,并将其用作
quests
对象的键

// All quest elements ----v---------v
$('#botBox').on('click', '[id^=quest]', function() {
    $("#divContent1").hide().html(quests[this.id]).fadeIn(500);
}); // Use the ID of the element --------^-----^

首先创建一个对象以容纳不同的文本:

var quests = {
  quest11 : "blah blah",
  quest12 : "blah blah blah"
}
然后使用
“[id^=quest]”
“属性以“选择器将所有
quest
元素委托给
botBox
开头

然后,您可以简单地使用
this.id
获取单击的任务的id,并将其用作
quests
对象的键

// All quest elements ----v---------v
$('#botBox').on('click', '[id^=quest]', function() {
    $("#divContent1").hide().html(quests[this.id]).fadeIn(500);
}); // Use the ID of the element --------^-----^

您是否专门使用.each()来学习如何在此上下文中使用它?您可以为所有这些函数创建一个类,并使用$(this).attr(id)轻松执行所需的函数以获得单击的项。您误解了。每个函数都旨在迭代一组对象,假设你想从每个有任务类的div获得所有id。下面void的回答应该和你想做的一样。请不要使用
$(this)。attr(“id”)
,DOM会很好地发送它
这个.id要简单得多。任务是编号的,这需要一个数组。也许使用数组会使解决方案更加清晰?您是否专门使用.each()来学习如何在此上下文中使用它?您可以为所有这些函数创建一个类,并使用$(this).attr(id)轻松执行所需的函数以获得单击的项。您误解了。每个函数都旨在迭代一组对象,假设你想从每个有任务类的div获得所有id。下面void的回答应该和你想做的一样。请不要使用
$(this)。attr(“id”)
,DOM会很好地发送它
这个.id要简单得多。任务是编号的,这需要一个数组。也许使用数组会使解决方案更清晰?请不要使用
$(this).attr(“id”)
,DOM会很好地发送这个
this.id
简单得多。当然,这只是解析原始代码的最小更改。请不要使用
$(this.attr(“id”)
,DOM会将其发送过来
this.id
简单得多。当然,这只是解析原始代码的最小更改。例如,当我尝试您的代码并单击quest12时,.html()输出变成“Avantages”。不仅如此,quest12元素也消失了。到目前为止,我的每一封回复都是这样做的。至少我知道我不需要.each函数。比如我用quest12 ID单击元素。用我的代码,输出变成“quest12”。使用您的代码,它将成为“Avantages”。预期的结果是“胡说八道”。如果你对此感到困惑,请重读我的问题。我明白了。奇怪。上面提供的另一个答案很好。不过,谢谢你!例如,当我尝试您的代码并单击quest12时,.html()输出变成“Avantages”。不仅如此,quest12元素也消失了。到目前为止,我的每一封回复都是这样做的。至少我知道我不需要.each函数。比如我用quest12 ID单击元素。用我的代码,输出变成“quest12”。使用您的代码,它将成为“Avantages”。预期的结果是“胡说八道”。如果你对此感到困惑,请重读我的问题。我明白了。奇怪。上面提供的另一个答案很好。不过,谢谢你!当我尝试你