首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jquery点击事件调用2次

jquery点击事件调用2次
EN

Stack Overflow用户
提问于 2012-04-02 16:54:26
回答 2查看 672关注 0票数 0

在我的函数中,当我将click事件添加到object时,调用了两次。我发现没有。解决方案的形式,但没有任何帮助。

有人能帮我解决这个问题吗?

我的代码:

代码语言:javascript
复制
function accordionOptions(AccordionBox, AccordionSec) {
    var accordionBox = AccordionBox,
        accordionSec = AccordionSec;

    $.each(accordionSec, function (i, values) {
        $('h3', values).each(function () {
            $(this).unbind('click').bind('click', function () {
                $(this).toggleClass('selected').siblings('.expand-area').slideToggle().end().parent().siblings().children('h3').removeClass('selected').siblings('.expand-area').slideUp();

                var subSec = $(this).parent().children().find('.subSec');

                $(subSec).click(function () {
                    console.log(this.tagName); // i am getting 2 times...why?
                })

            });
        })
    })

}

$(document).ready(function () {
    var accordionBox = $('#Accordion'),
        accordionSec = {
            accorIndice: $('#sec1', '#Accordion'),
            accorGeography: $('#sec2', '#Accordion'),
            accorAllIndia: $('#sec3', '#Accordion')
        }
    accordionOptions(accordionBox, accordionSec);
});

它是非常长的HTML,所以我不能放在这里。抱歉的

HTML的某些部分:

代码语言:javascript
复制
<ul class='subSec'>
    <li>
        <h4>1. Select a key index</h4>
    </li>
    <li>
        <label>
            <input type="radio" value="CCI" name="cci" checked>Consumer Confidence Index</label>
    </li>
    <li>
        <label>
            <input type="radio" value="HW" name="cci">Housewives Index</label>
    </li>
</ul>
<ul class='subSec'>
    <li>
        <h4>2. Select your sub-indices (optional)</h4>
    </li>
    <li>
        <label>
            <input type="radio" value="CSI" name="subIndices">Consumer Spending Index</label>
    </li>
    <li>
        <label>
            <input type="radio" value="EI" name="subIndices">Employment Index</label>
    </li>
    <li>
        <label>
            <input type="radio" value="Ii" name="subIndices">Inflation Index</label>
    </li>
    <li>
        <label>
            <input type="radio" value="OI" name="subIndices">Onion Index</label>
    </li>
    <li>
        <label>
            <input type="radio" value="CI" name="subIndices">Corruption Index</label>
    </li>
</ul>
EN

回答 2

Stack Overflow用户

发布于 2012-04-02 17:20:46

点击事件结束时的return false;函数怎么样?

票数 0
EN

Stack Overflow用户

发布于 2012-04-02 17:44:40

我不认为这是一个事件冒泡的问题,尽管它可能是诱人的想法。

问题似乎是var subSec = $(this).parent().children().find('.subSec');不止一次地找到相同的.subSec,因此不止一次附加了它的点击处理程序。

据我所知,您应该能够删除$.each(accordionSec,function(i,values){...});包装器,并使用以下命令将单击功能附加到h3元素:

代码语言:javascript
复制
$('h3', context).each(function(){
    ...
});

如果没有看到更多的超文本标记语言,我对context不太确定,但是您应该能够解决这个问题。(尝试'#‘+手风琴的外包装器的id )。

编辑:

哦,是的,您还需要从外部单击处理程序内部释放$(subSec).click(function () {...));,否则每次外部单击事件发生时,subSecs的单击功能就会被一次又一次地添加。

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

https://stackoverflow.com/questions/9973427

复制
相关文章

相似问题

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