Проблема с вызовом функции jquery - PullRequest
0 голосов
/ 06 июня 2011

У меня есть следующая функция jQuery, я пытаюсь вызвать функцию OnMenuClick, отправив мой MenuId в качестве параметра, но мое событие OnMenuClick не дает желаемого результата, это какой-то альтернативный способ добиться этого

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 Ответ

1 голос
/ 06 июня 2011

это может быть не решение, но вы можете попробовать

сначала добавьте 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);
 }
}

НТН ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...