レンダリング時に多くのアンカー タグを生成する ASP.NET メニューがあります。
私の要件は
- href またはアンカー タグが "" または "#" の場合にポストバックを防止します。
- カーソルが手を表示しないようにする
最初に、生成されたアンカー タグの 1 つのマークアップを確認しました
<a href="#"
class="popout level1 static"
tabindex="-1"
onclick="__doPostBack('ctl00$NavigationMenu','Unternehmen')">
Company
</a>
既にバインドされているクリック イベントを確認し、簡単な jquery スニペットを作成しました。
$(document).ready(function () {
$(".menu a").each(function () {
var anchor = $(this);
var url = (anchor.attr('href').length == 0) ? "" : anchor.attr('href').trim();
if (url == "" || url == "#") {
//unbind the __dopostback
anchor.unbind('click');
anchor.bind('click',function (e) {
e.preventDefault();
});
anchor.css("cursor", "default");
}
});
});
空のリンクにカーソルを合わせると、カーソルが手の代わりにデフォルトのカーソルを表示します。これは、アンカーが認識されたことを意味します。しかし、アンカーをクリックすると、ポストバックが発生しました!
で置き換えanchor.unbind('click');
てanchor.kill('click');
みましe.preventDefault();
た追加e.stopPropogation
で置き換えてみました、さらにはでreturn false;
置き換えてみましanchor.bind('click', function(e){
たanchor.click(function(e) {
何も機能していないようです。私のコードの何が問題なのですか?