在我的函数中,当我将click事件添加到object时,调用了两次。我发现没有。解决方案的形式,但没有任何帮助。
有人能帮我解决这个问题吗?
我的代码:
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的某些部分:
<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>发布于 2012-04-02 17:20:46
点击事件结束时的return false;函数怎么样?
发布于 2012-04-02 17:44:40
我不认为这是一个事件冒泡的问题,尽管它可能是诱人的想法。
问题似乎是var subSec = $(this).parent().children().find('.subSec');不止一次地找到相同的.subSec,因此不止一次附加了它的点击处理程序。
据我所知,您应该能够删除$.each(accordionSec,function(i,values){...});包装器,并使用以下命令将单击功能附加到h3元素:
$('h3', context).each(function(){
...
});如果没有看到更多的超文本标记语言,我对context不太确定,但是您应该能够解决这个问题。(尝试'#‘+手风琴的外包装器的id )。
编辑:
哦,是的,您还需要从外部单击处理程序内部释放$(subSec).click(function () {...));,否则每次外部单击事件发生时,subSecs的单击功能就会被一次又一次地添加。
https://stackoverflow.com/questions/9973427
复制相似问题