我相信table
裏面divNarrative1
。在keypress
this
將指向divNarrative1
並呼籲closest
就不會給你所需的table
。您應該使用e.target
而不是this
。
$(document).ready(function() {
$("#divNarrative1").keypress(function(e){
alert(e.target.id);
var msgId = $(e.target).closest('table').attr('id');
alert(msgId);
});
});
更新:通過OP
繼承人創建表
// Insert HTML table
function InsertTable() {
var div = document.getElementById('divNarrative1'); // table reference
div.focus();
document.getElementById("hfProjectBoxNumber").value = Number(document.getElementById("hfProjectBoxNumber").value)+ 1;
document.getElementById("hfBillTextNumber").value = Number(document.getElementById("hfBillTextNumber").value)+ 1;
var projdiv = "Projectbox" + document.getElementById("hfProjectBoxNumber").value
//create table
var tbl = document.createElement('table');
tbl.id = projdiv;
tbl.width = "570px";
tbl.setAttribute("table-layout", "fixed");
tbl.setAttribute("border", "1");
tbl.setAttribute("height", "50px");
tbl.border = 1;
//create header row
var oRow = tbl.insertRow(-1);
var oCell = oRow.insertCell(-1);
oCell.width = "570px";
oCell.setAttribute("colspan", "2");
oCell.setAttribute("align", "center");
oCell.innerHTML = projdiv;
//create coumns
var oRow = tbl.insertRow(-1);
var oCell = oRow.insertCell(-1);
oCell.width = "430px";
oCell.innerHTML = "DESCRIPTION";
oCell.setAttribute("align", "center");
var oCell2 = oRow.insertCell(-1);
oCell2.width = "140px";
oCell2.innerHTML = "AMOUNT";
oCell.setAttribute("align", "center");
div.appendChild(tbl);
return false;
}
繼承人的HTML頁面
012上的JS
</div>
<asp:Button ID="btnEditNarr" runat="server" Text="Edit Narrative" />
<input type="button" value="Clear all Content" onclick="clearBilltextbox();"/>
<input type="button" value="Save Content" onclick="getallcontent();"/>
</asp:Panel>
是否說表是未定義的('$(this).closest('table')is undefined')還是id undefined('msgId is undefined')?你的HTML是什麼? – 2012-03-01 19:23:24
請給我們一些標記,看看... – Gabe 2012-03-01 19:23:36
什麼是HTML的樣子?我的猜測是,#divNarrative1不在表格內,因此「最接近」不是遍歷DOM的適當方式。 – tvanfosson 2012-03-01 19:24:23