動的に追加されるメニューがあり、メニューリンク自体を含むページの任意の場所をクリックすると削除されます。私が達成しようとしているのは、特定のリンクをクリックしても削除できないようにすることです。残念ながら、デリゲートメソッドを使用できません。それが役立つ場合は、クライアント側で使用されているjqueryの古いバージョンのため、それを更新するオプションはありません。
だから、たぶんそうする方法があるかどうか提案することができます。これが私の簡単な例です。
<script>
$(function() {
$('.menu').append('<a href="" class="solid">Option</a> <a href="">Option</a> <a href="">Option</a>');
$('.menu a').live('click',function(){
return false;
});
$('a.solid').live('click',function(){
return false;
});
$('html').click(function() {
$('.menu').remove();
});
});
</script>
とコンテナ
<div class="menu"></div>
多分それはこのように機能します
$('html').click(function(e) {
if(!$(e.target).hasClass('solid') )
{
$('.menu').remove();
}
});
参照してください: http://jsfiddle.net/fq86U/2/
これを試しましたか:
$('.menu a').click(function(event){
event.stopPropagation();
});
ドキュメント全体のクリックを検出し、クリックされた現在の要素がメニュー要素かどうかを確認することもできます
$(document).click(function(event){
if(event.target !== $('.menu')[0]) {
// hide the menu...
}
});
$('html').click(function(e) {
/* exept elements with class someClass */
if($(e.target).hasClass('someClass')){
e.preventDefault();
return;
}
/* but be carefull the contained links! to be clickable */
if($(e.target).is('a')){
return;
}
/* here you can code what to do when click on html */
});