2015-11-13 59 views
0

我目前有一个表,并在1列删除链接,如果用户点击这个链接它触发一个onClick基本上标志该项目将被删除,并隐藏TR。 它工作正常,但我只是想知道是否有更好的方法.....jquery - 设置值​​

$(document).on('click', '.deleteCell', function (e) { 
    //Belt and braces - only do this for <td> elements 
    var target = $(e.target); 
    if (!target.is('td')) {return;} 

    var h = this.innerHTML; 
    var newH = h.replace("CsUpdated", "CsDeleted"); 
    newH = newH.replace("CsAdded", "CsDeleted"); 
    this.innerHTML = newH; 

    //We clicked on a TD so get the row TR.  
    var theRow = $(this).closest('tr'); 
    theRow.hide(); 
}); 

我只是想一定比字符串操作,我与替换做一个更好的办法?在那儿? 我尝试过这些,但没有运气...

$(this).attr('value', 'CsDeleted'); 
$(target).attr('value', 'CsDeleted'); 
$(this).val('CsDeleted'); 
$(target).val('CsDeleted'); 

感谢

+0

use .text()or .html() – guradio

+1

表格数据单元没有值。你究竟在做什么? – Quentin

+0

希望是TD 删除 我想修改ModelStatus的价值。 我现在看到它在输入... excude我。 我只需要能够现在得到Input元素 – AntDC

回答

2

TD已经没有价值的使用.text().html()

+0

这相当于操作符想避免的字符串操作 – collapsar

0

td可是没有一个value属性。

使用

$("td").html() // to fetch html 
$("td").html("<span> Hello World </span>") // to set html 

$("td").text() // to fetch plain text 
$("td").text("Hello World") // to set plain text 
0

您可以自定义data-使用 - 任何HTML元素的属性(见this MDN articlethe reference)。这些都可以通过jquery的attr方法访问,并且对渲染没有影响。

代码的PoC:

$(document).on('click', 'td.deleteCell', function (e) { 
    //Belt and braces - only do this for <td> elements 

    $(this) 
     .removeAttr('data-CsUpdated') 
     .removeAttr('data-CsAdded') 
     .attr('CsDeleted', '1') 
    ; 

    //We clicked on a TD so get the row TR.  
    $(this).closest('tr').hide(); 
}); 

如果在你的代码中给出的数值是相互排斥的,这简化了

$(document).on('click', 'td.deleteCell', function (e) { 
    //Belt and braces - only do this for <td> elements 

    $(this).attr('Cs', 'Deleted'); 
     // attr 'Cs' contained 'Added' or 'Updated' 
     // This scheme requires modifications at other places in your original code ! 
    ; 

    //We clicked on a TD so get the row TR.  
    $(this).closest('tr').hide(); 
}); 

更新

由于OP实际上想要修改孩子的价值input元素,处理程序简化为:

$(document).on('click', 'td.deleteCell', function (e) { 
    $('input', $(this)).val('CsDeleted'); 
     // more specific selector may be needed depending on possible cell contents 

    $(this).closest('tr').hide(); 
}); 
+0

这只是工作 - 谢谢 所以我正在读它作为....'inpu'设置值为'csDeleted'..正确? 只是为了帮助我理解这一点,如果我想让输入变为var,然后设置变量值...... 它会是.. ...? va r myInput = $('input',$(this)); myInput.val('CsDeleted'); 再次感谢。 – AntDC

+1

@AntDC是的,你的理解是正确的。 – collapsar

0

你可以使用以下方法来设置单元格内容

.html().text().prepend.append

然而.val()只适用于具有的value="...."属性输入的任何。如果你要撑住细胞与一些数据使用.data("key","value")它可以在任何时候通过调用.data("key");

0

访问试试这个,

$(function(){ 
$('.delete').click(function(){ 
    $(this).closest('tr').remove(); 
    }); 

});