0

ボタンのホバー効果とクリック効果を特別に作成したいのですが、ホバーされているボタンとは別のボタンに変更する方法であるため、CSSではなくJavaScriptを使用する必要があります。

私は次のjQueryを持っています:

    // Highlights Browse button when the user hovers over div.upload
    $(".upload").hover(
        function() {
            $("input[type='button']").addClass("browse-hover");
        },
        function() {
            $("input[type='button']").removeClass("browse-hover");
        }
    );

    // Darkens Browse button when user clicks on div.upload
    $(".upload").mousedown(function() {
        $("input[type='button']").addClass("browse-active");
    });

    $(".upload").mouseup(function() {
        $("input[type='button']").addClass("browse-active");
    });

メインのCSSファイルから次のクラスが追加されています。

.browse-hover {
    background: #9972ad; /* Old browsers */
    background: -moz-linear-gradient(top,  #9972ad 0%, #7a3e99 100%); /* FF3.6+ */
    background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#9972ad), color-stop(100%,#7a3e99)); /* Chrome,Safari4+ */
    background: -webkit-linear-gradient(top,  #9972ad 0%,#7a3e99 100%); /* Chrome10+,Safari5.1+ */
    background: -o-linear-gradient(top,  #9972ad 0%,#7a3e99 100%); /* Opera 11.10+ */
    background: -ms-linear-gradient(top,  #9972ad 0%,#7a3e99 100%); /* IE10+ */
    background: linear-gradient(to bottom,  #9972ad 0%,#7a3e99 100%); /* W3C */
    filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#9972ad', endColorstr='#7a3e99',GradientType=0 ); /* IE6-8 */
}

.browse-active {
    background: red;
}

HTML:

<div class="upload-form">
            <form action="" method="post" enctype="multipart/form-data">
                <div class="upload">
                    <input type="file" name="file-input">
                     <span class="input-filename">Select a file...</span>
                     <input type="button" value="Browse">
                </div>

                <input type="submit" name="submit" value="Upload">
                <span class="valid-formats">Valid input: .txt files &lt;= 512 KB</span>
            </form>
        </div>

ホバー時に変更する(グラデーション)前に背景が設定されているため、以前の値を上書きする方法でaddClass()を使用しています。まったく機能していません。正しく配線されています。アラートセットをクリックすると、正しく実行されます。

4

2 に答える 2

3

Buttonはアップロードの子であるため、完全なCSSを実行して、次のことを試すことができます。

.upload:hover input[type='button'] { /* style */ }

http://jsfiddle.net/bLXAy/2/

于 2013-02-07T23:37:44.117 に答える
0

DOMの準備ができたら、このコードをすべてネストして実行してみてください(function() { YOUR CODE });

于 2013-02-07T23:40:12.597 に答える