0

次のようなファイルが 1 つあります。

//function accessLinkClick(e) {
//    e.preventDefault();
//    $('#registerLink', '#loginLink')
//        .unbind('click', accessLinkClick);
//    dialog(this);
//}

function accessLinkClick(e) {
    alert("hi")
}

そして別:

$(document).ready(function () {
$('#loginLink','#registerLink')
.bind('click', accessLinkClick);
});

私のHTMLは次のようになります。

<a id="loginLink" class="button dialogLink" title="Login" data-href="/MyAccount/Access/Login" data-title="Admin" data-entity="n/a" data-dialog="UserAdmin" href="#">Login</a>

最初のファイルで関数の名前を変更し、コードを実行したところ、関数が存在しないというエラーが表示されました。したがって、これは accessLinkClick 関数が知られていることを私に証明しました。次に、関数名を accessLinkClick に戻しました。

コードをステップ実行すると、関数がバインドされているように見えるので、bind イベントに移動することがわかります。

ただし、コードを実行して loginLink をクリックしても何も起こりません。

ここで何か間違ったことをしていますか?関数を機能させるには、関数のパラメーターを削除する必要がありますか?

4

1 に答える 1

8

問題はあなたのセレクタです:

$('#loginLink','#registerLink')

必要な文字列は 2 つではなく 1 つです。

$('#loginLink, #registerLink')

この理由は、jQuery 関数の 2 番目の引数がcontextあるためです。#loginLink2 番目の引数の子孫である1 番目の引数に一致する要素を探します。

于 2012-09-09T13:59:23.380 に答える