2013-09-16 112 views
0

我不知道如何搜索这个,所以如果之前已经问过这个道歉。基本上我使用jQuery/AJAX/PHP动态保存到数据库,拉回信息等。我做了我的表格保存并拉回房间的ID,然后保存项目的ID,但是我需要一种方法动态地将房间ID保存到它的子项目中,这样它们都链接到数据库中。我会尽力解释我能做的一切。动态获取元素的属性?

<div id="formHolder" rel="1"> 
      <form class="rooms"> 
       <label>Room</label> 
       <input type="text" name="roomName[]"> 
       <input type="hidden" class="roomId" name="roomId[]"> 
       <input type="hidden" class="inventoryId" name="inventoryId[]" value="<?=$_GET['inventory_id']?>"> 
       <div class="saveRoom">Save Room</div> 
      </form> 
      <div class="addItem"> 
       <form class="items"> 
        <label>Item</label> 
        <input type="text" name="itemName[]"> 
        <label>Description</label> 
        <textarea name="itemDescription[]"></textarea> 
        <label>Condition</label> 
        <select name="itemCondition[]"> 
         <option value="Good">Good</option> 
         <option value="Adequate">Adequate</option> 
         <option value="Poor">Poor</option> 
        </select> 
        <input type="hidden" class="itemId" name="itemId[]" value=""> 
        <input type="hidden" name="itemInventoryId[]" value="<?=$_GET['inventory_id']?>"> 
        <input type="hidden" name="itemParent[]" value=""> 
        <div class="saveIcon" style="display: none; color: green;">SAVED!</div> 
        <div class="save">Save Item</div> 
       </form> 
      </div> 
      <div id="addItem">Add another item</div> 
     </div> 

这是我正在使用的基本形式。我的计划是将房间的ID保存到rel属性中,然后每个添加的项目都会从那里获取该ID,但我根本无法解决如何去做。

$('#addItem').on('click', function(){ 
      $('<form class="items">\ 
       <label>Item</label>\ 
       <input type="text" name="itemName[]">\ 
       <label>Description</label>\ 
       <textarea name="itemDescription[]"></textarea>\ 
       <label>Condition</label>\ 
       <select name="itemCondition[]">\ 
        <option value="Good">Good</option>\ 
        <option value="Adequate">Adequate</option>\ 
        <option value="Poor">Poor</option>\ 
       </select>\ 
       <input type="hidden" class="itemId" name="itemId[]" value="">\ 
       <input type="hidden" name="itemInventoryId[]" value="<?=$_GET["inventory_id"]?>">\ 
       <input type="hidden" name="itemParent[]" value="'$(this).parent().parent().attr('rel');'">\ 
       <div class="saveIcon" style="display: none; color: green;">SAVED!</div>\ 
       <div class="save">Save Item</div>\ 
      </form>').fadeIn(500).appendTo('.addItem'); 
     }); 

你可以看到我一直在使用$(this).parent().parent().attr('rel');试过,但还是不行,所以我很为难。我知道我在这里松了一口气,如果有人想和我打开一个聊天请做,谢谢你的时间

+5

不管你做什么,或者解决的办法是做用户永远之类的东西.parent()。父()总有一天你的代码会变得糟糕AK,你会花几个小时想知道为什么。 – bitoiu

+0

@bitoiu - 想给你的评论+1千倍。 – EkoostikMartin

+0

谢谢,不错的建议:) –

回答

1

它会正常工作,但你会上涨太多的水平!与rel ATTR股利只是parent,不是父母父:

$(this).parent().attr('rel'); 

或者,因为你的父母有一个ID(其中最好是独一无二的!):

$("#formHolder").attr("rel"); 
+0

会给这个去2秒: ) –

+0

这似乎工作:)我对DOM树感到困惑,并认为我本来是要上升到另一个级别!快去尝试一些其他的动态的东西,但很感谢你在这 –

+0

帮助你没问题,一定要接受答案一旦亚能:D – tymeJV

0

这是指“ #addItem”分区和‘相对’是它的一个属性是直接父,所以我觉得应该是刚刚

$(this).parent().attr('rel');