首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JQuery中动态调用函数

如何在JQuery中动态调用函数
EN

Stack Overflow用户
提问于 2016-08-15 05:45:37
回答 2查看 2.7K关注 0票数 2

我已经设置了html codes,我想为每一组设置一个函数,在这里我可以提取一些数据或者做一些活动,所以基本上我需要根据DOM中的html代码调用函数,假设我有标题部分,我想收集菜单项,我有滑块来收集滑块信息,所以我需要调用标头函数来进行相应的活动,并调用滑块函数来执行这个活动,我浏览了一些关于eval()的信息,但是我想它有很多坏处,而且已经过时了。请建议我如何做到这一点。

HTML:

代码语言:javascript
复制
<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>

滑翔机

代码语言:javascript
复制
<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>

现在,我想从这两个元素中收集数据,并将数据传递到laravel框架的视图中,在该视图中,它将为每个部分生成一个弹出以供编辑。

代码语言:javascript
复制
$('.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
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-15 06:32:28

您不能使用文字编号作为属性名。如果要调用属性1 of object design,则使用design[1]代替。此外,不能将属性转换为非初始化变量,必须使用var design = {};使其成为对象.如果design对象的属性存储在nits变量中,那么将其称为design[nits]();。另外,下次不要忘记在这里发布代码之前测试您的代码。在第一个函数之后,您已经忘记了)

代码语言:javascript
复制
$('.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
};
票数 2
EN

Stack Overflow用户

发布于 2016-08-15 06:35:18

您想要使用design[nits]();

这将获得属性nits of design并使用()执行它。

但还有另一个问题。您的design将在each循环之后声明,因此它在内部不可用。你得把它放在前面。

代码语言:javascript
复制
$(function() {
    var design = {};

    design.funcOne = function() {
        alert("funcOne called");
    }

    design.funcTwo = function() {
        alert("funcTwo called");
    }

    $('div[data-nitsid]').each(function() {
        var nits = $(this).data("nitsid");
        design[nits]();
    });
});
代码语言:javascript
复制
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div data-nitsid="funcOne">
  I will call 'funcOne'!
</div>
<div data-nitsid="funcTwo">
  I will call 'funcTwo'!
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38949880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档