jQuery正在添加类并单击,但同时表现为单击

时间:2015-10-16 14:13:39

标签: jquery html

我有一个使用以下HTML的后退按钮

<div class="back-from-professors level-one">Back</div>

我使用以下jQuery来应用后退动作

jQuery('.research-box-container').on('click', '.back-from-professors.level-one', function() {
    jQuery('.professor').removeClass('show');
    jQuery('.professor-list').hide();
    jQuery('.research-box-inner-sections-container').show();
    jQuery('.capability-list').removeClass('temporary-hide');
});

然后我想在

时应用以下内容
jQuery('.professor-list').on('click','.professor.show', function() {

    jQuery(this).parent().find('.back-from-professors').addClass('level-two');
    jQuery(this).parent().find('.back-from-professors').removeClass('level-one');       
    jQuery(this).next().addClass('show');
    jQuery(this).removeClass('show');

}); 

jQuery('.professor-list').on('click','.back-from-professors.level-two', function() {

    jQuery(this).parent().find('.grey-list-item.professor').addClass('show');
    jQuery(this).parent().find('.grey-list-professor-details').removeClass('show');
    jQuery(this).removeClass('level-two');
    alert('test');
    jQuery(this).addClass('level-one');     

}); 

然而,当我按预期点击.back-from-professors.level-two时,然后提醒test。然后它添加了类level-one,但那么我也从上面的第一个jQuery代码执行操作,即它应用了jQuery('.research-box-container').on('click', '.back-from-professors.level-one', function() {});

的操作

这应该发生在.on()吗?

我可以在这里复制问题...... http://jsfiddle.net/tb8uLpnL/4/(jsfiddle已更新)

1 个答案:

答案 0 :(得分:0)

您的问题是.research-box-container位于back内。因此,当您点击.professor-list时,它会附加到jQuery('.professor-list').on('click','.back-from-professors.level-two', function() { 所附带的事件: -

.level-one

然后你也可以添加.research-box-container。然后当它再次冒泡到下一个元素jQuery('.research-box-container').on('click', '.back-from-professors.level-one', function() { 所附的事件

.level-one

在类.research-box-container内找到一个元素。

最简单的解决方案是同时附加到jQuery('.research-box-container').on('click', '.back-from-professors.level-one', function() { jQuery('.research-box-container').on('click','.back-from-professors.level-two', function() {

所以: -

var item_before = entity.SimpleCollection.First();

AutoMapper.Mapper.Map(model, entity);

var item_after = entity.SimpleCollection.First();

bool item_same_references = object.ReferenceEquals(item_before, item_after);