2015-11-13 60 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(); 
    }); 

});