各位大大好,
有個程式功能為:點edit按鈕,此時會傳入此列的id給JS function,之後把 div 顯示出來。
按update按鈕時,把id與textarea的內容傳入給後端PHP做處理(更新資料庫)。
由於按update按鈕時需得到此編輯列的id(有很多列所以id都不同)。
請教問題:如何得到此id ?
條件1:js不使用全域變數
條件2:不要在showEdit()裡對元素新增屬性(ex: $('xxx').attr(value,id)),所以type="hidden"的input也不能用
不知是否有按edit時所傳入得id在按update時也能傳入/得到/使用,
查了一下不曉得是否跟閉包的概念有關,只是我還不太了解。
所以不知是否有人有好的方法?謝謝。
<body>
foreach (...as value)
{
<a href="#" onclick="showEdit(value['id']);">edit</a>
}
<div class="editBox" display:none;>
<textarea> </textarea>
<a href="#" onclick="update();">update</a>
<a href="#" onclick="cancel();">cancel</a>
</div>
<script>
//var globalID; 不使用
function showEdit(id)
{
//globalID = id; 不使用
$('.editBox').attr('display',"");
//$('xxx').attr('value',id); 不使用
}
function update()
{
....
$ajax{....}
}
function cancel()
{
$('.editBox').attr('display',"none");
}
</script>
</body>
既然你想用閉包:
<body>
foreach (...as value)
{
<a href="#" onclick="showEdit(value['id']);">edit</a>
}
<div class="editBox" display:none;>
<textarea> </textarea>
<a href="#" id="update">update</a>
<a href="#" id="cancel">cancel</a>
</div>
<script>
function showEdit(id)
{
$('.editBox').attr('display',"");
$('#update').unbind('click').on('click', update);
$('#cancel').unbind('click').on('click', cancel);
function update()
{
//使用id參數
$ajax{....}
}
function cancel()
{
//使用id參數
$('.editBox').attr('display',"none");
}
}
</script>
</body>
我沒測試過,你試試看吧。