从对象获取名称 - 值对?

时间:2016-03-26 23:20:41

标签: jquery object dom syntax

我有一个对象

<ul class="food-list">
   <div class="active orange">
      <li> orange</li>
      <select class="serving-size"><option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
   </div>
</ul>

<ul class="food-list">
   <div class="active eggs">
      <li> orange</li>
      <select class="serving-size"><option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
   </div>
</ul>

<ul class="food-list">
   <div class="active bagel">
      <li> orange</li>
      <select class="serving-size"><option value="1">1</option>
         <option value="2">2</option>
         <option value="3">3</option>
         <option value="4">4</option>
      </select>
   </div>
</ul>

在上面的点击功能中,我实际上要做的是:

  1. 获取属性(来自foodLoads对象),其名称与&#34; foodName&#34;中的文本相匹配。变量
  2. 将该属性的值设置为段落
  3. 将该段落添加到&#34;类型&#34;变量的父母。
  4. 以下是相应的HTML:

    <ul>

    * $('input').on('ifChecked', function(event) { var liText = $(this).parent().parent().text(); var wrappedUp = $('<div class="active"><li>' + liText + '</li><select class="serving-size"><option value="1">1</option><option value="2">2</option><option value="3">3</option><option value="4">4</option></select></div>'); $('.food-list').append(wrappedUp); $(wrappedUp).addClass('' + liText + ''); 中的div是在用户选中复选框时动态创建的。

      public ActionResult Edit([Bind(Include = "Id,No_,RaisonSociale,Magasin,RemiseHabituelle,FamilyName,FirstName,EmailSup,Login,AffPrix,PasserCmd,EmailRespMagasin,Admin,BoursePR,Actif,IdSession,VendeurItirénant,ChargeClient,ValidOuAnnul,Email,EmailConfirmed,PasswordHash,SecurityStamp,PhoneNumber,PhoneNumberConfirmed,TwoFactorEnabled,LockoutEndDateUtc,LockoutEnabled,AccessFailedCount,UserName")] ApplicationUser applicationUser)
        {
            if (ModelState.IsValid)
            {
                context.Entry(applicationUser).State = EntityState.Modified;
    
                try
                {
                    context.SaveChanges();
                }
                 catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
              {
                 Exception raise = dbEx;
                  foreach (var validationErrors in dbEx.EntityValidationErrors)
                {
                      foreach (var validationError in validationErrors.ValidationErrors)
                      {   string message = string.Format("{0}:{1}",
                              validationErrors.Entry.Entity.ToString(),
                             validationError.ErrorMessage);
                          // raise a new exception nesting
                          // the current instance as InnerException
                          raise = new InvalidOperationException(message, raise);
                      }
                }
                  throw raise;
             }
                return RedirectToAction("ListUsers","Account");
            }
            return View(applicationUser);
        }
    

    *从我所做的测试中,我发现一切正常,除了&#34;值&#34;变量。

    这让我问这个问题:

    是否(&#34;值&#34;变量)是检索对象(foodLoads)中属性值的正确语法?

    非常感谢帮助:)

1 个答案:

答案 0 :(得分:2)

现在您已经包含了HTML,这里有几个问题。

<li>的直接父级必须是<ol><ul><menu>标记。所以你的HTML不合法。见reference on MDN

  

HTML <li>元素(或HTML列表项元素)用于表示   列表中的项目。它必须包含在父元素中:   有序列表(<ol>),无序列表(<ul>)或菜单(<menu>

然后,一旦你修复了jQuery中的相应选择器,你的表查找可能就不起作用,因为你的HTML中有一个领先的空间

<li> orange</li>

这将在foodName变量上放置一个前导空格,这将导致它在对象查找中找不到任何内容。

修复HTML和相应的jQuery选择器以制作合法HTML后,您可以删除<li>标记内的前导空格,也可以删除任何前导空格:

var foodName = $(type).text().trim();

您还必须确保没有多个与<li>匹配的.active,因为如果您这样做,.text()将从这两个文本中获取文本并连接它,它也不会与你对象中的任何键匹配。