Javascript 如何在JQuery中动态调用函数
我有一组Javascript 如何在JQuery中动态调用函数,javascript,jquery,Javascript,Jquery,我有一组html代码,我希望每一组都有一个函数,我可以在其中提取一些数据或执行一些活动,因此基本上我需要根据DOM中的html代码调用函数,假设我有标题部分,我想收集菜单项,我有滑块,我想收集滑块信息,所以我需要调用header函数来执行相应的活动,调用slider函数来执行活动,我遇到了一些关于eval()的信息,但我想它有很多缺点,已经过时了。请告诉我如何才能做到这一点 HTML代码: 标题 <div class="header" data-nitsid="1"> <
html代码
,我希望每一组都有一个函数,我可以在其中提取一些数据或执行一些活动,因此基本上我需要根据DOM
中的html代码调用函数,假设我有标题部分,我想收集菜单项,我有滑块,我想收集滑块信息,所以我需要调用header函数来执行相应的活动,调用slider函数来执行活动,我遇到了一些关于eval()
的信息,但我想它有很多缺点,已经过时了。请告诉我如何才能做到这一点
HTML代码:
标题
<div class="header" data-nitsid="1">
<div class="branding">
<h1 class="logo">
<a href="index.html"><img src="images/logo@2x.png" alt="" width="25" height="26">NitsOnline</a>
</h1>
</div>
<nav id="nav">
<ul class="header-top-nav">
<li class="has-children">
<a href="index.html">Home</a>
</li>
</ul>
</nav>
</div>
<div id="slideshow" data-nitsid="2">
<div class="revolution-slider">
<ul> <!-- SLIDE -->
<!-- Slide1 -->
<li data-transition="zoomin" data-slotamount="7" data-masterspeed="1500">
<!-- MAIN IMAGE -->
<img src="http://placehold.it/1920x1200" alt="">
</li>
</ul>
</div>
</div>
不能使用文字数字作为属性名称。如果要调用对象
design
的属性1
,请改用design[1]
。此外,不能将属性分配给未初始化的变量,必须使用var design={}代码>使其成为对象。如果design
对象的属性存储在nits
变量中,则将其称为design[nits]()代码>。另外,下次在发布代码之前不要忘记测试代码。在第一次函数之后,您忘记了)
$('.page-content-wrapper').find('[data-nitsid]').each(function() {
// getting data to call function
var nits = $(this).data("nitsid");
// calling function
design[nits]();
});
var design = {};
design[1] = function() {
// do ajax request to views of header
};
design[2] = function() {
// do ajax request to views of slider
};
您想要使用design[nits]()代码>
这将获取design
的属性nits
,并使用()
执行它
但还有另一个问题。您的设计
将在每个循环后声明,因此它在内部不可用。你必须把它放在前面
$(函数(){
var设计={};
design.funcOne=函数(){
警报(“呼叫funcOne”);
}
design.funcTwo=函数(){
警报(“两个呼叫”);
}
$('div[data nitsid]')。每个(函数(){
var nits=$(this.data(“nitsid”);
设计[nits]();
});
});代码>
我会叫‘funcOne’!
我会叫“二号”!
您可以将onclick传递给html以获取某些参数并将其定义到js中。不确定您想要什么exactly@akshaypadwal我不想要onclick方法,我正在尝试为DOMI中出现的各个部分构建弹出窗口,我想你的意思是design[nits]()代码>,是吗?@NitishKumar。很不清楚你在问什么。你能举一个你想处理的数据的例子吗?@eisbehr:是的,我想它也是一样,但是我怎么称呼它呢,我的意思是什么是执行这个的最好方法。如果使用数字索引,在你的设计声明中最好使用数组而不是对象。这会更加一致…@eisbehr。我认为最好使用object,因为只有design[1]
和design[2]
有数字索引。正如您从代码中看到的,nits
变量始终是字符串,因此我假设OP希望向design
变量添加字符串索引。此外,如果您阅读问题的编辑历史记录,您会发现design[1]
是design.header
和design[2]
是design.slider
。
$('.page-content-wrapper').find('[data-nitsid]').each(function() {
// getting data to call function
var nits = $(this).data("nitsid");
// calling function
design[nits]();
});
var design = {};
design[1] = function() {
// do ajax request to views of header
};
design[2] = function() {
// do ajax request to views of slider
};