0

click()イベントハンドラーを追加しようとしているときに、それが機能しない単純なハイパーリンクがあります。私は試しましたが、.on(), .live(), .delegate()どれもうまくいきませんでした。どうすればいいですか?

私のbootstrap.min.cssが外部リソースセクションに含まれていない理由がわからないため、フィドルを作成できません。

それ以外の方法があれば教えてください。

私のコード:

HTML:

<div class="navbar nav-fixed-top navbar-inverse" style="min-height: 50px; margin-bottom: 0; box-shadow: 0px 2px 5px #222;">
    <!-- Creating a fixed to the top navbar with no bottom margin and a nice little shadow and increasing the height -->
    <div class="navbar-inner" style="border-radius: 0;min-height: 50px; ">
        <!-- Creating the inner content of navbar and increasng it's height aswell to match the parent's height aswell -->
        <div class="container-fluid">
            <!-- Main header starts -->
            <button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
                <!-- Small screen collapseable menu starts -->  <span class="icon-bar"></span>  <span class="icon-bar"></span>  <span class="icon-bar"></span> 
                <!-- The collapseable menu icon(becuase the three `icon-bar` make an icon :P) -->
            </button>   <a class="brand" href="#"><img src="img/logo.png"
                    style="height: 25px;" /> </a> 
            <!-- adding the logo to the header -->
            <div class="nav-collapse collapse pull-right">
                <!-- div holding collapseable menu's data -->
                <ul class="nav">
                    <!-- creating a list to be created in the collapseable menu -->
                    <li><a href="#" id="register_button">Register</a>
                    </li>
                    <!-- adding an hyper link to the collapseable menu -->
                </ul>
                <!-- closing the list -->
            </div>
            <!-- closing the div holding collapseable menu's data -->
        </div>
        <!-- closing the main header -->
    </div>
    <!-- closing inner content holder of navbar div -->
</div>
<!-- closing the fixed to top navbar holder -->

CSS: bootstrap.min.css の使用

JS:

var registerBtn = $("#register_button"); //storing the hyperlink of register in a variable
var i = 0; //click count
$(registerBtn).on('click', function (e) {
    i++;
    if (i % 2 === 0) {
        $("#register_frm").fadeToggle('fast', function () {
            $("#login_frm").fadeToggle('fast');
        });
        $("#register").text('Register');
    } else {
        $("#login_frm").fadeToggle('fast', function () {
            $("#register_frm").fadeToggle('fast');
        });
        $("#register").text('Login');
    }
});

何か提案はありますか?

4

2 に答える 2

1

コードを変更してください:

$(function() {
    var registerBtn = $("#register_button"); //storing the hyperlink of reg....

    var i = 0; //click count

    registerBtn.on('click', function (e) { // since registerBtn is a reference to anchor tag
        e.prevenDefault(); // prevent default behaviour of anchor tag
        .........
    });
});
于 2013-09-04T17:10:33.063 に答える
1

おそらく、要素がDOMで作成される前にハンドラーバインディングを実行しています。コードをドキュメントの末尾に移動する (要素が作成された後) か、ready イベント内にラップします。

$(function() {
    var registerBtn = $("#register_button"); //storing the hyperlink of register in a variable
    var i = 0; //click count
    $(registerBtn).on('click', function (e) {
        i++;
        if (i % 2 === 0) {
            $("#register_frm").fadeToggle('fast', function () {
                $("#login_frm").fadeToggle('fast');
            });

    $("#register").text('Register');
        } else {
            $("#login_frm").fadeToggle('fast', function () {
                $("#register_frm").fadeToggle('fast');
            });
            $("#register").text('Login');
        }
    });
});
于 2013-09-04T16:21:37.387 に答える