【发布时间】:2017-10-25 00:26:58
【问题描述】:
我正在尝试使用 hide() 隐藏带有 jQuery 的附加 div,但不起作用。
我也附加了触发动作的按钮。
这是按钮:
<button type="button" class="btn btn-danger btn-xs" name="'+response[i][0]+'" id="studentContactDeleteButton" style="width:110px">Eliminar registro</button>
这里是函数的完整代码(包括div和按钮):
这样,我根据记录的数量将 div 附加到我的页面。
var formData = {type:"contact",id:id};
$.ajax({
type: "POST",
data : formData,
url: "./content/studentsData.php",
dataType: 'json',
success: function(response){
for(var i = 0; i < response.length; i++) {
$("#contactData").append('<div id="studentContactContainer'+response[i][0]+'" style="margin-bottom:-12px;border-top:1px solid #ddd;padding:16px 0px;">');
$("#contactData").append('<div class="form-group"><label class="col-sm-4 control-label">Descripción:</label><div class="col-sm-7 text-primary" id="div-studentContactDesc'+response[i][0]+'"><input type="text" style="font-size:12px" class="form-control" value="'+decodeHtml(response[i][1])+'" id="studentContactDesc'+response[i][0]+'" placeholder="Descripción"></div><div class="col-sm-1"> </div></div>');
$("#contactData").append('<div class="form-group"><label class="col-sm-4 control-label">Teléfono:</label><div class="col-sm-7 text-primary" id="div-studentContactPhone'+response[i][0]+'"><input type="text" style="font-size:12px" class="form-control" value="'+decodeHtml(response[i][2])+'" id="studentContactPhone'+response[i][0]+'" placeholder="Teléfono"></div><div class="col-sm-1"> </div></div>');
$("#contactData").append('<div class="form-group"><div class="col-sm-1"> </div><div class="col-sm-3 text-primary"><button type="button" class="btn btn-success btn-xs" name="'+response[i][0]+'" id="button-test" style="width:110px">Guardar cambios</button></div><div class="col-sm-3 text-primary"><button type="button" class="btn btn-danger btn-xs" name="'+response[i][0]+'" id="studentContactDeleteButton" style="width:110px">Eliminar registro</button></div><div class="col-sm-3 text-primary"><button type="button" class="btn btn-primary btn-xs" id="" style="width:110px">Restablecer</button></div><div class="col-sm-2"> </div></div>');
$("#contactData").append('</div>');
}
}
});
有了这个,我试图隐藏 div 但不起作用
$(document).on('click','#studentContactDeleteButton',function(){
var id = $(this).attr("name");
$("#studentContactContainer"+id).hide();
});
点击工作正常,因为我得到了 id 的值(response[i][0] 有 id 的值)但$("#studentContactContainer"+id).hide(); 不起作用,只隐藏了 div 的边框顶部但不是全部。
希望有人有想法。
谢谢。
【问题讨论】:
-
您不应该在循环中使用 studentContactDeleteButton 的 id。如果循环运行不止一次(我认为是这个想法),则它是无效的。另外,为什么不在删除按钮上使用数据属性而不是名称属性?
-
为什么无效?我使用
var id = $(this).attr("name");获取每个按钮的名称属性值。 -
您的文档将包含多个 ID 属性为“studentContactDeleteButton”的按钮。 ID 的全部意义在于它是唯一的。 w3.org/TR/html-markup/global-attributes.html#common.attrs.id
-
@Cristian,你是对的,你建议怎么做?使用类而不是 id?
-
我把id改成
id="studentContactDeleteButton'+response[i][0]+'",然后我用$(document).on('click','[id^="studentContactDeleteButton"]',function(){触发事件,这样对吗?
标签: javascript jquery html css