0

私はすべてを試し、どこでも読んでいますが、これを機能させることができないようです。一体何が間違っているのか...

var visibility = $('#short-link').css('visibility');
$('#share-link span').click(function() {
    if (visibility != 'hidden'){
        $('#short-link').css({visibility: 'visible'});
    } else {
        $('#short-link').css({visibility: 'hidden'})
    }
});

助けてください

4

4 に答える 4

2

関数の外部で可視性を定義しているため、これは期待どおりに動作していないと思います。そのため、変更されることはありません。私はあなたが書くつもりだったと思います:

$('#share-link span').click(function() {
    var visibility = $('#short-link').css('visibility');
    if (visibility != 'hidden'){
        $('#short-link').css({visibility: 'visible'});
    } else {
        $('#short-link').css({visibility: 'hidden'})
    }
});

または、プロパティではなくオブジェクトをキャッシュします。

var $shortLink = $('#short-link');
$('#share-link span').click(function() {
    var visibility = $shortLink.css('visibility');
    if (visibility != 'hidden'){
        $shortLink.css({visibility: 'visible'});
    } else {
        $shortLink.css({visibility: 'hidden'})
    }
});
于 2013-03-06T01:00:09.223 に答える
1

私はお勧めします:

$('#share-link span').click(function() {
    this.style.visibility = this.style.visibility == 'visible' ? 'hidden' : 'visible';
});

これにより、jQuery メソッドを使用してノードのインライン スタイルを更新することが回避され、不必要な変数の設定が回避されます (その後、可視性の変更に応じて更新する必要があります)。

これはあなたの言うことからずっと良いようです.私はまだ純粋なJSをいじっていません.jQueryだけです. 「これ」の代わりに #short-link を使用しませんか? 私はそれをjavascriptオブジェクトにしますか?

より多くのjQueryアプローチにとどまりたい場合は、次のことをお勧めします。

$('#share-link span').click(function() {
    $(this).css('visibility', function(i,v){
        return v == 'visible' ? 'hidden' : 'visible';
    });
});

もちろん、それがspanあなたが行動したいことであると仮定します。

于 2013-03-06T01:05:20.137 に答える
0

私はあなたが可視性に関する引用を逃していると思います

$('#short-link').css('visibility','visible');

また

 $('#short-link').css({'visibility':'visible'});
于 2013-03-06T01:10:15.803 に答える
0

イベント ハンドラーの外部で可視性をチェックしているため、それ自体は実際には変化しません。

デイブの答えに加えて、要素の可視性を切り替えたいだけの場合は、うまくいく.toggleかもしれません:

$('#share-link span').click(function() {
    $('#short-link').toggle();
});

あなたのアプローチとこれとの違いは、プロパティを変更するのではなく、元の値との.toggle()間で切り替えることです。display: nonedisplayvisibility

于 2013-03-06T01:02:39.663 に答える