使用jquery更改id attr的值

时间:2014-04-26 07:55:41

标签: javascript php jquery html mysql

我有一个表格,其数据是从数据库中提取的,而且该表格的每个标识也是动态唯一的(td' id值等于数据库&#39 ; s表值)。在每个td中,当任何人双击它时,会出现一个输入字段,当用户编辑输入字段时,我已经进行了Ajax调用(使用onblur),并更新了数据库中的这个td' s字段。哪个会工作我想,现在我想改变td的id值,它将来自数据库(Ajax调用)。

例如::

我的表格代码::

<td id="2*Name>Engr._C.F._Zaman" class=" "> Engr. C.F. Zaman  </td>

ID 是从数据库生成的,其中第一个 2是表格ID 的ID,在(*) db表的列名[Name] 之后,(&gt;)之后是值该列的ID为2

当任何人点击这个td时,他/她将得到一个输入字段,就像下面给出的那样::

 <td id="2*Name>Engr._C.F._Zaman" class=" ">
    <input type="text" class="form-control" id="sabbir" value="Engr._C.F._Zaman" name="Name" onblur="AjaxChange('2', 'Name', 'Engr._C.F._Zaman', '2*Name>Engr._C.F._Zaman');">
 </td> 

这是使用jquery onclick 事件生成的。

现在,如果上述输入字段发生任何更改,则调用 AjaxChange 。我的AjaxChange代码是::

function AjaxChange( id,  Attr, tdValue, td ) {  
   $.ajax({
      url: "ajax_call.php",  // this is just update the db 
      type: "POST",
      data: { table: "life", id=id, name=Attr, value=tdValue },  // 
      dataType: "html",
      done: function(data) {
        // first I want to change the id of td, which value will be data
        // td's id format is id*Attr>data

        // next show data in the td with out input field
        // <td id="id*Attr>data"> data </td>
      }
   });
 }

现在如何更改此td的 id 属性?

3 个答案:

答案 0 :(得分:2)

立即解决问题。

<td id="2*Name>Engr._C.F._Zaman" class=" ">
    <input type="text" class="form-control" id="sabbir" 
        value="Engr._C.F._Zaman" 
        name="Name" 
        onblur="AjaxChange('2', 'Name', 'Engr._C.F._Zaman', '2*Name>Engr._C.F._Zaman', this);">
</td> 

脚本功能

function AjaxChange( id,  Attr, tdValue, td, element ) {  
   $.ajax({
      url: "ajax_call.php",  // this is just update the db 
      type: "POST",
      data: { table: "life", id=id, name=Attr, value=tdValue },  // 
      dataType: "html",
      done: function(data) {
        //Set ID
        $(element).closest("td").prop('id', YourNewID)
      }
   });
}

但是,我强烈建议您重构代码并使用 data - * 属性。继承人的例子

HTML

<td class="" data-value="2*Name>Engr._C.F._Zaman" data-id="2" data-attr="Name" data-name="Engr._C.F._Zaman" >
    <input type="text" class="form-control name-txt" 
        value="Engr._C.F._Zaman" 
        name="Name">
</td> 

的JavaScript

$('.name-txt').on('blur', function(){
    var self = $(this);
    var cell = self.closest("td");
    var id = cell.data('id');
    var Attr= cell.data('Attr');
    var name= cell.data('name');
    var tdValue = cell.data('value');

    $.ajax({
      url: "ajax_call.php",  // this is just update the db 
      type: "POST",
      data: { table: "life", id=id, name=Attr, value=tdValue },  // 
      dataType: "html",
      done: function(data) {
        //Update values using
        cell.data('id', YourNewID)
      }
   });
})

答案 1 :(得分:1)

我想你的意思是使用javascript / jquery,这意味着到达id的最简单方法是使用jqueries“attr”-function。

现在的问题是你应该使用哪个选择器,我想在这种情况下你的输入字段id(“sabbir”)足够了。您必须自己决定。

$("#sabbir").closest("td").attr("id", yourNewId);

作为对你评论中其他问题的回答:

$("#"+yourNewId).html(data);

应该可以替换tds HTML。

答案 2 :(得分:1)

来自数据库的您的ID 2*Name>Engr._C.F._Zaman是不好的。因为特殊字符并不总是给出你想要的结果,所以你应该避免使用这个特殊字符。您可以使用data-*存储数据库信息,这样您就不必每次都更改 ID