2012-08-11 134 views
0

好的,这很奇怪。在我的页面上,无论何时在元素上调用.hide()或.show(),都不会发生任何事情,除非我单击页面上的某处(其他任何地方)。行为没有发生得更早,我不知道我做了什么导致它爬行。jQuery .hide()和.show()在点击页面之前不工作

我使用jQuery 1.7.2和引导程序作为我的css框架(有很多修改)。这种行为发生在Chrome,Firefox和Safari(在OSX上)。我已经减少了JavaScript,但只有jQuery和我的.hide()调用,它仍然会发生。控制台中没有显示错误消息。

我甚至不知道如何去调试这个问题。我发现它绝对怪异,谷歌搜索没有透露任何东西。有什么我可以用开发者工具或类似的工具来发现为什么.hide()不能按预期工作?

我正在使用coffeescript。这是咖啡的脚本;

$('#recipient_type').blur -> 
    if $(this).val() == 'Other' 
    $('#recipient-details').show() 
    else 
    $('#recipient-details').hide() 

这是它编译的javascript;

$('#recipient_type').blur(function() { 
     if ($(this).val() === 'Other') { 
     return $('#recipient-details').show(); 
     } else { 
     return $('#recipient-details').hide(); 
     } 
    }); 

但这种现象不仅发生在我的代码中。例如,bootstrap-alert.js警报解除脚本给我带来了同样的问题。

+3

发布您的代码。 – darma 2012-08-11 11:54:51

+1

是您的显示/隐藏代码,运行时响应页面上的某些用户操作,如更改文本框的值 – 2012-08-11 12:02:38

+0

@Parv - 是的,它是 – brad 2012-08-11 12:06:00

回答

1

您可以在执行隐藏的代码上设置断点以查看它是否正在执行。

这是一个模糊,所以根据定义,它不会优于,直到你离开活动对象。