2011-12-21 45 views
1

我試圖通過附加到CSS菜單的jQuery函數獲取列表值。使用jQuery插件獲取無序列表的子元素

我的代碼如下。

$.fn.appmenu = function(options){ 

    //problem 
    $(this).click(function(){ 
     alert($(this).filter("ul li").html()); 
    }); 

    $(this).hover(function(){ 
     $(this).filter("li").animate({ 
      top:"20px" 
     }); 
    }); 

    //this.find('li:last').after("<li>test</li>"); 
    var lists = '<li title="Home" link="index.php"></li>'; 

    $.each(options, function(index, value) { 
     lists += '<li style="background-image:url(images/'+value[1]+'.png);" title="'+value[0]+'" link="'+value[1]+'"></li>'; 
    }); 

    return this.html("<ul>"+lists+"</ul>") 
} 

我打電話用我的菜單:

//title, icon, link 
$("#app-menu").appmenu([ 
    ["add", "address", "#link1"], 
    ["contact", "comment", "#link2"], 
    ["about", "pencil", "#link3"] 
]); 

任何幫助將appriciated。

+1

而你的問題是? – Bojangles 2011-12-21 12:49:26

+1

你可以添加你的標記嗎? – 2011-12-21 12:49:29

回答

1

你的html結構是不正確的。 <li>標籤無效,jQuery不喜歡你的lists變量內容。

我已經改變了你的小提琴一點,但它現在工作。見http://jsfiddle.net/6yLYZ/

+0

絕對出色的隊友! – hawx 2011-12-22 00:16:02

1

您必須使用find代替filter - filter正在尋找從當前元素集合,find正在從當前設定的任何元素也通過全子女

然而,其結果將是,因爲html功能相同是得到一個完整的HTML,這是在第一個元素匹配元素 - 在你的例子什麼是<li></li>