jQuery显示/隐藏不起作用

Tim*_*van 6 jquery

这真的很奇怪,我已经打了好几个小时对着它,并且无法理解它.

我正在使用jQuery隐藏表单上的一些元素(用类标记.read-only)并显示其他元素(用类标记.edit-version).

基本上,用户单击编辑链接,并且在该链接的父级内,隐藏只读项目并显示编辑项目(输入).这很好用.

问题发生在服务器的响应中,这反过来反过来.它找到托管表单的div,它隐藏编辑版本并显示只读.除了它没有.这是代码:

host = $('#employee-card-49');
$('.edit-version', host).hide();
$('.read-only', host).show();
Run Code Online (Sandbox Code Playgroud)

我已经验证它找到了正确的div(#employee-card-49),并且是正确的项目,并且是页面上唯一具有该ID的项目.

我已经证实这$('.edit-version', host).length是正确的.它返回3,表示它找到了三个元素.

我已经确认每件退回的商品$('.edit-version', host)都是正确的.我可以得到它们的属性.

没有出现javascript错误,但hide()和show()调用根本不会修改display属性.我甚至试过css('display', 'none')无条件打电话.

如果我将调用更改为$('.edit-version').hide()调用,它可以工作,但这会影响页面上我不想影响的其他div.

任何帮助,将不胜感激.

Tho*_*lds 6

我遇到的情况下show(),并hide()由于相对定位不工作.我会检查以确保您没有任何奇怪的定位集,或者至少是子元素的位置与父母匹配.另外,您是否仔细检查过display属性是否未被其他任何设置设置?也许有些事情是设置阻止或内联`!important!


Tim*_*van 1

这不是一个很好的解决方案,但它确实有效。完全摆脱host范围并使用选择器本身的范围解决了问题。

$('#employee-card-49 .edit-version').hide();
$('#employee-card-49 .read-only').show();
Run Code Online (Sandbox Code Playgroud)

诡异的。