为什么在jQuery中调用if和else条件?

时间:2015-09-18 22:40:36

标签: javascript jquery if-statement conditional

我的问题是关于使用委托, // Depth 1 Menu Controls $('nav #block-superfish-1').on('click', 'li.menuparent.sf-depth-1 div.mobilesubnavarrow', function(){ if(!$(this).hasClass('sf-expanded')){ // Global $('li.menuparent.sf-depth-1').removeClass('sf-expanded'); $('li.menuparent.sf-depth-1 div.mobilesubnavarrow').removeClass('sf-expanded'); $('li.menuparent.sf-depth-1').find('ul').css({display: 'none'}); $(this).addClass('sf-expanded'); $(this).closest('li.menuparent.sf-depth-1').addClass('sf-expanded'); $(this).closest('li.menuparent.sf-depth-1').find('ul').slideDown(); return; } else { //$(this).removeClass('sf-expanded'); $(this).closest('li.menuparent.sf-depth-1').removeClass('sf-expanded'); $(this).closest('li.menuparent.sf-depth-1').find('ul').slideUp(); } });

我已经环顾四周,无法在stackoverflow上找到有关我的问题的可能解决方案的信息。

我的点击事件中的两个条件都被解雇或根本没有被解雇。我尝试过改变条件,但仍然开火或者根本不开火,我不知道为什么。

提供的当前jQuery根本不会触发。如果我删除或注释掉else语句中的所有代码并添加console.log(' test')作为测试,那么你会发现两者都被解雇了。

有人会这么善良并帮助我解决问题所在吗?不幸的是,我不能通过jsfiddle来模拟环境,因为这是一个VPN背后的drupal站点,有很多依赖。

jQuery如下:

.sf-depth-2

我还有另一个完全相同的jQuery用于'深度2',唯一改变的是类@Entity @Table(name = "comprobante_pago") public class ComprobantePago implements Serializable { private Integer id; private String serie; private SocioNegocio emisor; private Usuario usuario; @Id @Column(name = "id") @SequenceGenerator(name = "seq", sequenceName = "comprobante_pago_id_seq",allocationSize=1) @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "seq") public Integer getId() { return id; } @Column(name = "serie") public String getSerie() { return serie; } public void setSerie(String serie) { this.serie = serie; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id_emisor") public SocioNegocio getEmisor() { return emisor; } public void setEmisor(SocioNegocio emisor) { this.emisor = emisor; } @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "id_usuario") public Usuario getUsuario() { return usuario; } public void setUsuario(Usuario usuario) { this.usuario = usuario; } } ,所以在这里发布没有意义同样。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

我已经为您的代码创建了一个简化的小提琴:

https://jsfiddle.net/f6f2j319/

上面的代码似乎按预期工作。 如果代码根本没有触发,我建议你检查是否指定了正确的jQuery选择器:

li.menuparent.sf-depth-1 div.mobilesubnavarrow

中的

nav #block-superfish-1

(同时检查标记的结构以确保div的正确顺序......将其与我的小提琴进行比较)

ifelse语句都不应该一起开始......这个函数可能会快速连续发射两次但是它很难说没有看到更多的代码。

检查您的脚本是否未在页面上包含两次(特别是如果它包含意大利面条代码)。

我还在else声明中添加了评论小提琴: https://jsfiddle.net/k14oumfe/

这似乎就是你需要的行为。

如果情况不是这样,请告诉我。