简化并重写我的重复代码

时间:2013-01-17 22:04:16

标签: javascript jquery css

好的,所以我有一个包含单个行或父行的表,其中有一些子项链接到该父项。我有图标删除父亲或个别儿子。图标将显示模式弹出(而不是警报)以确认删除。它有效,但我将不得不重复它。我认为这可以简化为查找ID或类,因为模态显示/隐藏以这种方式工作。提前谢谢。

<script>
function delVesselAll(){
    $("#vessel_tab #father1").remove();
    $("#vessel_tab .son1").remove();
    document.getElementById(id).style.display = 'block';
};
function delVesselAll2(){
    $("#vessel_tab #father2").remove();
    $("#vessel_tab .son2").remove();
    document.getElementById(id).style.display = 'block';
};
</script>

我的HTML:

<td class="cell_50">
  <a style="text-decoration:none;" onclick="showModal('delAll1')"><img src="images/delete-row-icon1.png" title="Delete this row" height="12" width="12" class="father1Del" id="father1Del"/></a>
</td>
<div class="delModal" style="z-index:999999; margin-left:200px; margin-top:30px; display:none" id="delAll1">
  <img src="images/warning.png" />&nbsp;Are you sure you want to delete vessel and the corresponding tanks?<br />
  <input type="button" value="Cancel" class="hide" onclick="hideModal('delAll1')"/>
  <input type="button" value="Delete" onclick="delVesselAll()"/>
</div>

所以我基本上有很多行做同样的事情,可以有类或ID“father1”“father2”“son1”“son2”。此外,我希望这些div可以使用类似$(this).fadeIn('slow');之类的内容淡入淡出 提前谢谢。

1 个答案:

答案 0 :(得分:4)

您可以传入变量(可能通过循环,但这取决于您的数字的生成方式):

function delVesselAll(num){
    $("#vessel_tab #father" + num).remove();
    $("#vessel_tab .son" + num).remove();
    document.getElementById(id).style.display = 'block';
};

然后称之为:

delVesselAll(1);
delVesselAll(2);

如果您的数字是可预测的和连续的,您可以循环迭代它们:

for (var i = 1; i < $("[id^='father']").length; i++) {
    delVesselAll(i);
}

如果不清楚,您可能需要查看此tutorial