2011-06-06 69 views
0

我有以下jQuery函數,我試圖通過發送我的MenuId作爲參數調用OnMenuClick函數,但是我的OnMenuClick事件沒有給出所需的輸出,是他們實現此目的的任何替代方法?調用jquery函數的問題

function CreateMenus(results) { 
for (var i = 0; i < results.length; i++) { 
    $("<div class='Menu'>" + results[i].Text + "</div>") 
    .click({ MenuId: results[i].MenuId }, OnMenuClick) 
    .appendTo("#accordionContainer"); 
} 
} 

這是我OnMenuClick功能

function OnMenuClick(event) 
    { 
    $("div[id ^= 'menuItemGroup']").slideUp(500); 
    $.ajax(
     { 
      type: "POST", 
      url: "MenuItems.asmx/GetMenuItems", 
      data: '{"menuId":"' + event.data.MenuId + '"}', 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(items) { 
       $(event.target).children().remove(); 
       var html = "<div id='menuItemGroup" + event.data.MenuId + "' style='display:none'>"; 
       for (var j = 0; j < items.length; j++) { 
        html += "<div class='MenuItem'> <a href='" + items[j].NavigateUrl + "'>" + 
        items[j].Text + "</a></div>"; 
       } 
       html += "</div>"; 
       $(event.target).append(html); 
       $("#menuItemGroup" + event.data.MenuId).slideDown(500); 
      }, 
      error: function(err) { 
       alert(err.status + " - " + err.statusText); 
      } 
     } 
    ) 
} 

這將是我的示例XML輸出如果MenuId價值1傳遞給OnClick

<?xml version="1.0" encoding="utf-8" ?> 
    <ArrayOfMenuItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
    <MenuItem> 
     <MenuId>1</MenuId> 
     <MenuItemId>1</MenuItemId> 
     <Text>Books</Text> 
     <NavigateUrl>google.com</NavigateUrl> 
    </MenuItem> 
    <MenuItem> 
     <MenuId>1</MenuId> 
     <MenuItemId>2</MenuItemId> 
     <Text>Cd</Text> 
     <NavigateUrl>yahoo.com</NavigateUrl> 
    </MenuItem> 
    </ArrayOfMenuItem> 

回答

1

它可能不是解決辦法,但你可以試試

首先附加DIV的容器,然後進行結合

function CreateMenus(results) { 
for (var i = 0; i < results.length; i++) { 
    $("<div class='Menu'>" + results[i].Text + "</div>")   
    .appendTo("#accordionContainer") 
    .click({ MenuId: results[i].MenuId }, OnMenuClick); 
} 
} 

HTH ...