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
};