2011-08-10 8 views
-3

に追加するには、私のjqueryのスクリプトを修正したいと思います。だから、もしスクリプトが== noneを表示するとしたら、ユーザーは#author-dropdownを見なければならず、display == blockのときidは#author-dropdown-extendedになるはずです。このスクリプトを修正するにはどうしたらよいですか?私はクリックでコンテンツを押し下げ、このjqueryのコードを有する異なる#ID

答えて

0
$('#author-dropdown').attr("id","author-dropdown-extended").slideDown(); 

もが

$('#showhide').click(function() { 
    if($('.author-dropdown').is(':hidden')) { 
     $('.author-dropdown').slideDown().removeClass('author-dropdown').addClass('author-dropdown-extended'); 
    } else { 
     $('.author-dropdown').slideUp().removeClass('author-dropdown-extended').addClass('author-dropdown'); 
    } 
    return false; 
    }); 
+0

これは変更されましたが、#author-dropdownで戻ってくることはありません – funguy

+0

上記を参照してください... – Tom

+0

ありがとう、トム、うまく動作します! – funguy

0

文書のIDを動的に変更しないでください。そのためには、class属性を使用してください。しかし、あなたはあなたが本当にしたいことができるかどうか - のjQueryを使用して1.6+:

var $elem = $('#author-dropdown'); 
$elem.prop('id', 'new-id'); 

を古いjQueryのバージョンでは、ちょうど.attr()の代わり.prop()を使用しています。

+0

#idの使用が悪いのはなぜですか? – funguy

+0

IDを使うのは悪いことではありません。しかし、あなたがそれらを使用しようとしている方法でIDを使用することは悪いです...あなたが達成しようとしているのは、クラスだけでなく、IDを割り当て、その後、外観を変更するためにクラスを追加/の要素 – Tom

+0

@Mathias属性ではなくid属性ではないのですか? 'prop()'ではなく 'attr()'を使うべきですか? – StuperUser

0

このスクリプトの一部を改正...

$('#author-dropdown-extended').attr("id","author-dropdown").slideUp(); 

私は個人的にかかわらず、このような何かをしようと、元の状態に戻ってそれを設定するには、次の変更しますか?これを試して。

$(document).ready(function() { 
    $('#showhide').click(function() { 
     if ($('#author-dropdown').css('display') == 'none') { 
      $('#author-dropdown-extended').slideUp('fast', function() { 
       $('#author-dropdown').slideDown('slow'); 
      }); 
     } else { 
      $('#author-dropdown').slideUp('fast', function() { 
       $('#author-dropdown-extended').slideDown('slow'); 
      }); 
     } 
     return false; 
    }); 
}); 
関連する問題