从li里面的输入中获取id

时间:2013-03-13 22:09:46

标签: php jquery html ajax

我正在尝试将该输入中的文本添加到我的数据库中,但它只从li中的第一个元素获取数据。问题在于$(“input#todo_id-”+ currentID).val(),我需要做出哪些更改?在此先感谢您的帮助。

<li id="todo-'.$this->data['id'].'" class="todo">
<input id="todo_id-'.$this->data['id'].'" type="text" class="category">
<a id="addCategory" href="#" >Save</a>   
</li>

jquery的:

$('#addCategory').live("click",(function(e){        
$.get("ajax.php",{'text':$("input#todo_id-" + currentID).val(),"id":currentID.data('id'),'action':'new_category' },function(msg){
        $(msg).hide().appendTo('.categoryList').slideDown();
});
    e.preventDefault();
}));

currentID = $(this).closest('.todo');

2 个答案:

答案 0 :(得分:1)

currentID = $(this).closest('.todo');是一个jQuery对象而不是ID 如果您想使用ID:currentID = $(this).closest('.todo').attr('id');

然后记得将$.get()来电参数“改为”"id":currentID

btw:

attr('id')而非data('id')
不推荐使用live()。使用on()代替

答案 1 :(得分:0)

我认为你想要点击的li的ID。您需要在处理程序中设置currentID才能工作。另外,如上所述,currentID不是实际的id字符串,它是元素的jQuery。

$('#addCategory').live('click', function(e) {
    var currentID = $(this).closest('.todo');
    $.get("ajax.php",
          {
              'text':currentID.find("input:first").val(),
              'id':currentID.attr("id"),
              'action':"new_category"
          },
// etc. etc.

请注意,正如Horen指出的那样,我使用.attr()而不是.data(); Horen对.live()的赞成也是正确的。赞成.on()