0

ticketSearchTitleticketSearchdiv 被隐藏时,我试图用 id 更改 h2 标题的文本颜色。但是我用来做这件事的那段代码似乎完全破坏了它(即:标题上没有指针图标,不能隐藏 div)。

分区结构:

  <h2 id="ticketSearchTitle" >SEARCH</h2>
  <div id="ticketSearch"><div>

完整代码:

$("h2#ticketSearchTitle").css({'cursor':'pointer', 'display':'inline'});

  $("h2#ticketSearchTitle").click(function(){

      $("#ticketSearch").toggle('slow');

       //change h2 text to show that is is inactive
       if ($("h2#ticketSearch").is(':hidden')){
          $("#ticketSearchTitle").css('color','#D3D3D3')
      }

  });

破坏代码的 JQuery 片段:

 //change h2 text to show that is inactive
       if $("h2#ticketSearch").is(':hidden'){
          $("#ticketSearchTitle").css('color','#D3D3D3')
      }
4

3 回答 3

2

你忘了加括号吗if

if ($("h2#ticketSearch").is(':hidden')){
于 2013-03-29T04:11:15.240 回答
2

当您一个接一个地执行这两个序列时,您会导致问题,因为切换只是启动一个动画,而当您立即检查元素是否隐藏时该动画并未完成:

$("#ticketSearch").toggle('slow');

//change h2 text to show that is is inactive
if ($("h2#ticketSearch").is(':hidden')){
   $("#ticketSearchTitle").css('color','#D3D3D3')
}

你有几个选择。您可以检查它是否在动画之前隐藏并根据动画前值进行操作(知道它将被切换)。或者,您可以使用实际动画和完成功能,以便其余代码仅在切换完成时运行。

例如,如果您希望在动画完成后运行第二部分代码,您可以这样做:

$("#ticketSearch").toggle('slow', function() {
    //change h2 text to show that is is inactive
    if ($("#ticketSearch").is(':hidden')){
       $("#ticketSearchTitle").css('color','#D3D3D3')
    }
});

仅供参考,没有理由"h2#ticketSearch"用作您的选择器。 "#ticketSearch"会更快并产生相同的结果。

于 2013-03-29T04:11:45.350 回答
2

你忘记了两件事

1)你忘记了 if 周围的括号

      if ($("h2#ticketSearch").is(':hidden')){

2)你ticketSearch是一个 div 不是h2

       if $("h2#ticketSearch").is(':hidden'){ //wrong
       if $("div#ticketSearch").is(':hidden'){ //correct

JSFIDDLE:http: //jsfiddle.net/KKgTU/4/

于 2013-03-29T04:22:53.647 回答