我现在感到困惑和沮丧,来这里寻找一些启发。在这片标记javascript函数调用两次
jQuery('#elements_hidden .vign').on('click', function(e)
{
var valid = '/img/site/valid.png';
var unvalid = '/img/site/unvalid.png';
var anchor = jQuery(this).next('.valid');
var anchor_block = jQuery(this);
var list = jQuery(this).parents('li').parents('ul').children('li');
var state = anchor.attr('src');
console.log('state:' + state);
jQuery(list).each(function(index, val)
{
jQuery(val).children('.valid').attr('src',unvalid);
jQuery(val).children('.vign').attr('src',jQuery(val).children('.vign').attr('src').replace('on.png','off.png'));
});
if (anchor.attr('src') == unvalid)
{
anchor.attr('src',valid);
anchor.siblings('.vign').attr('src', anchor.siblings('.vign').attr('src').replace('off.png','on.png'));
if(state != unvalid)
{
anchor.attr('src',unvalid);
anchor.siblings('.vign').attr('src',anchor.siblings('.vign').attr('src').replace('on.png','off.png'));
}
}
});
:
我这个工作的JS函数
<!-- html markup -->
<div id="elements_hidden" style="z-index: 0">
<div class="moteur">
<ul id="moteur">
<li>
<img data-optionCode="12" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
<li>
<img data-optionCode="2T" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
<li>
<img data-optionCode="4T" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
</ul>
</div>
<div class="couleur">
<ul id="couleur">
<li>
<img data-optionCode="0MP50NP5" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
<li>
<img data-optionCode="0MP60NP6" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
</ul>
</div>
<div class="selle">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
<div class="jonc">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
<div class="retros">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
<div class="signature">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
<div class="rangement">
<ul id="rangement">
<ul>
<li>
<img data-optionCode="DAKP7" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
<li>
<img data-optionCode="DAKR1" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
</ul>
<ul>
<li>
<img data-optionCode="DLU01" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
</ul>
<ul>
<li>
<img data-optionCode="DPQ01" class="vign" src="/img/site/vign/vign_off.png" />
<img class="valid" src="/img/site/unvalid.png" />
</li>
</ul>
</ul>
</div>
<div class="confort">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
<div class="perso">
<ul>
<li><img class="vign" src="/img/site/vign/vign_off.png" /><img class="valid" src="/img/site/unvalid.png" /></li>
</ul>
</div>
</div>
当用户点击了与类VIGN该功能的任何元素被触发两次,因为我在控制台日志中看到两行,而只有一次点击。
这个事实打破了这个功能的目标,因为第二次被更改为活动(有效)的图像被设置为无效(无效)。
有没有围绕任何忍者可以解释为什么它被触发两次,或者如果我对此感到困惑,为什么图像从未改变,当用户点击。
我会感激。感谢您的阅读时间。
问候
编辑:那种之后将信息回复
如果我修改的标记只是为了测试添加一个id的元素之一,让我们说:
<img id="moteur_vignette" data-optionCode="<?php echo $optionCode ?>" class="vign" src="<?php echo $this->basePath()?>/img/site/vign/vign_off.png" />
里面的div-> class-> moteur
我改变了选择器将函数附加到th在单击事件:
jQuery('#moteur_vignette').on('click', function(e) {
...
}
的解释之后,如果我很明白它也不会转回去要被触发两次,但它确实。所以我仍然感到困惑。
元素是否相互重叠?由于我没有CSS或输出,因此我无法分辨。 –
你可以请创建一个小提琴吗?我不完全遵循你的问题,但它可能有可能你已经把点击处理程序注册两次的代码... –