2010-07-04 65 views
2

我已經從Mootools切換到jQuery,因爲我認爲它有更好的支持。我有HTML這樣的:jQuery錨點擊「this」,「e.target」 - 返回url

<ul class="menuHandler"> 
<li class="menuTreeElement activeOpt" id="menuOpt1"> 
<ul id="menuOpt1Content"> 
<li><a href="#" class="menuOpener">Opcje</a><a href="#" class="sprite menuOpener"></a></li> 
<li class="submenuElement">Opcje</li> 
<li class="submenuElement">Opcje</li> 
<li class="submenuElement">Opcje</li> 
<li class="submenuElement">Opcje</li> 
<li class="submenuElement">Opcje</li> 
<li class="submenuElement">Opcje</li> 
</ul> 
</li> 
</ul> 

JS

jQuery(document).ready(function($) 
{ 
    $('.menuTreeElement .submenuElement').hide(); 
    $('.menuHandler li.menuElement, .menuHandler li.menuTreeElement').removeClass('activeOpt'); 
    $('.menuHandler li.menuElement, .menuHandler li.menuTreeElement').addClass('inactiveOpt'); 
    $('.menuHandler li.menuElement a.menuOpener, .menuHandler li.menuTreeElement a.menuOpener').click(function(e){ 
    e.preventDefault(); 
    alert(this); 
    alert(this.id); 
    alert($(this)); 
    alert(e.target); 
    alert(e.target.id); 
    alert($(e.target));  
    }); 
}); 

結果:

URL,空警戒,[目標對象],網址,空警戒,[對象的對象。我不知道該怎麼辦。鏈接,如果它會幫助:http://misiur.com/CRP/admin/

我想實現的是: 1.在您點擊一個帶班menuOpener 2.所有鋰與同UL內部類submenuElement(在這種情況下menuOpt1Content)都呈現

回答

5
$('ul.menuHandler').delegate('a.menuOpener', 'click', function(ev){ 

    //prevent follow of link 
    ev.preventDefault(); 

    //create a jquery object with the anchor element 
    var $anchor = $(this); 

    //get parent li with class menuTreeElement 
    var $li = $anchor.closest('li'); 

    //get its siblings and show??? 
    $li.nextAll().show() 


}); 
+0

相同的結果。這很複雜,因爲我需要把它作爲父母的兄弟姐妹。 – Misiur 2010-07-04 18:08:08

+0

哪個父母 - 主播? – redsquare 2010-07-04 18:08:54

+0

你錯了。看看這個menuTreeElement的HTML - 第一個孩子是ul - 它包含li,並且第一個是a。我需要用class「submenuElement」來顯示這個2級li兄弟姐妹。你的代碼不起作用 – Misiur 2010-07-04 18:14:36

0
$('.menuTreeElement .menuOpener').click(function(event) 
{ 
    event.preventDefault(); 
    $('.menuTreeElement .submenuElement').hide(); 
    $(this).parent().find('.submenuElement').show(); 
    return false; 
}); 
+0

這綁定了很多單獨的點擊事件。使用.delegate使用事件代理 – redsquare 2010-07-04 18:23:41

+0

不,不起作用。 「this」仍然是url – Misiur 2010-07-04 18:24:27

+0

我認爲目標是「1.你點擊一個類menuOpener 2.所有li與類submenuElement在同一個ul(在本例中menuOpt1Content)都顯示」。你想要什麼URL?如果你想要散列,使用this.href或$(this).attr('href')。 – 2010-07-04 18:42:17