2012-10-04 34 views
0

我的代码的最初部分正在工作。它加载-标志,然后在单击时更改为+标志。或者,如果需要,它可以加载多个+标志。无论哪种方式,第一次初始加载都很好。问题出在点击事件上。它根本不起作用。我的切换已损坏。你能帮助解决它吗?

$(document).ready(function() { 
    if ($('.user-email').length == 1) { 
     $('.user-email .section-icon').toggleClass('open'); 
     $('.section-icon').text('-'); 
    } else if ($('.user-email').length > 1) { 
     $('.section-icon').text('+'); 
    } 

    $('.user-email-text').click(function(event) { 
     event.preventDefault(); 
     if ($(".section-icon:contains('-')")) { 
      $('.section-icon').text('+'); 
     } else if ($(".section-icon:contains('+')")) { 
      $('.section-icon').text('-'); 
     } 
     $(this).parent().next().toggle(); 
     $(this).siblings('.section-icon').toggleClass('open'); 
     return false; 
    }); 
});​ 

我的小提琴是这里http://jsfiddle.net/6QW2K/

+7

“这根本不起作用。”不是错误消息,也不是问题描述。 – PeeHaa

+0

似乎你的小提琴缺少相当多的代码。 – Scott

+0

您需要将您的html添加到小提琴中,以便我们了解您的问题... – jtheman

回答

1
if ($(".section-icon:contains('-')")) { 

始终计算为true,您可以使用length属性:

if ($(".section-icon:contains('-')").length) { 

http://jsfiddle.net/f2GZG/

您还可以使用text实现方法具ð而是采用:contains选择:

$('.section-icon').text(function(i, cur){ 
    return cur === '+' ? '-' : '+' 
}) 

http://jsfiddle.net/UaGrt/

+0

感谢@undefined。我需要的只是length()方法。我很感激! – McGuyverr

+0

@McGuyverr不用客气,请注意,我更改了选择器,因为它没有在当前标记中选择您的元素。 – undefined

+0

如果有超过1个“用户电子邮件”类打印,它会按预期打印多个“+”号。点击这些锚点后,它会更改所有列出的“+”和“ - ”符号。不知何故'$('。section-icon')。text('+');'需要使用其他方法,如parent(),siblings()或(this),但我不确定。你能帮我吗? – McGuyverr