Javascript webforms:如果项被隐藏,如何删除DOM元素
我在一个小型asp.net项目中使用的水平导航有一个问题。 nav包含一个登录、配置文件和注销锚点,无论您是否登录,都会显示这些锚点 我通过在代码隐藏中设置.Visible属性来实现这种行为 现在我想在每个元素后面添加一个管道作为“分隔器”。这不能是实际列表项本身的一部分,因为它会影响a:hover效果 但是,即使元素不在DOM树中,也会显示die pipe divider。 看起来像 登录||| 我已经试着用计算机解决它了Javascript webforms:如果项被隐藏,如何删除DOM元素,javascript,jquery,asp.net,html,webforms,Javascript,Jquery,Asp.net,Html,Webforms,我在一个小型asp.net项目中使用的水平导航有一个问题。 nav包含一个登录、配置文件和注销锚点,无论您是否登录,都会显示这些锚点 我通过在代码隐藏中设置.Visible属性来实现这种行为 现在我想在每个元素后面添加一个管道作为“分隔器”。这不能是实际列表项本身的一部分,因为它会影响a:hover效果 但是,即使元素不在DOM树中,也会显示die pipe divider。 看起来像 登录||| 我已经试着用计算机解决它了 if ($("li.nav-item").length == 0) {
if ($("li.nav-item").length == 0) {
$('span.divider').remove();
}
if ($("li.nav-item").length > 0 && $("li.nav-item").is(':visible')) {
$('<span class="divider"> | </span>').appendTo('li.nav-item');
}
if($(“li.nav项目”).length==0){
$('span.divider').remove();
}
如果($(“li.nav项”).length>0&($(“li.nav项”).is(':visible')){
$(“|”).appendTo('li.nav item');
}
但这不起作用。我怎样才能解决这个问题
亲切的问候
/编辑:html标记(编辑的ID)
如果(会话[“svar_loggedin”]!=null)
{
linkLogin.Visible=false;
linkProfile.Visible=true;
linkLogout.Visible=true;
}
其他的
{
linkLogin.Visible=true;
linkProfile.Visible=false;
linkLogout.Visible=false;
}
试试这个js:
$.each($("li.nav-item").children("a").filter(":visible"), function (e) {
$('<span class="divider"> | </span>').appendTo($(this));
});
或alt.遍历控件,检查visible==true,如果是,则将span标记添加到文本属性尝试以下方法:
$.each($("li.nav-item").children("a").filter(":visible"), function (e) {
$('<span class="divider"> | </span>').appendTo($(this));
});
$(function () {
var elements = $('li.nav-item > a').filter(':visible');
for (var i = 0; i < elements.length - 1; i++) {
elements.eq(i).append($('<span class="divider"> | </span>'));
}
});
或alt.遍历控件,检查visible==true是否可见,如果是,则将span标记添加到文本属性$(函数(){
$(function () {
var elements = $('li.nav-item > a').filter(':visible');
for (var i = 0; i < elements.length - 1; i++) {
elements.eq(i).append($('<span class="divider"> | </span>'));
}
});
变量元素=$('li.nav-item>a')。过滤器(':visible');
对于(var i=0;i
就我而言,这就成功了。我没有意识到我的代码在改变asp:Hyperlink控件,而不是列表项
我相应地修改了Jquery代码片段,使其与所有锚点相关,这些锚点是类为“nav item”的列表项的子项
谢谢你们让我重回正轨 $(函数(){
变量元素=$('li.nav-item>a')。过滤器(':visible');
对于(var i=0;i
就我而言,这就成功了。我没有意识到我的代码在改变asp:Hyperlink控件,而不是列表项
我相应地修改了Jquery代码片段,使其与所有锚点相关,这些锚点是类为“nav item”的列表项的子项
谢谢你们让我重回正轨 你为什么不用边框呢?它们本机隐藏隐藏的元素,不需要javascript,也不会产生无意义布局元素的讨厌效果。因为管道是显式请求的。为什么不使用边框?它们本机隐藏隐藏的元素,不需要javascript,也不会产生无意义布局元素的恶劣影响。因为管道是显式请求的。具有visible的过滤器不起作用。由于元素可见性是通过asp.net.visible属性在codebehind中设置的,因此它在DOM树中不可用。如果没有,则添加了管道。我决定使用属性。现在,我需要拿出一个jQuery代码片段,以便在元素不可见时删除管道。我需要删除哪个属性才能使项目不可见?如果不加载整页,可见元素是否可以不可见?如果没有,那么上面的代码应该可以工作。。。我仍然有三重管道的问题。我想我找到了问题的根源。在Codebehind中,我正在处理asp:hyperlink控件并隐藏它们。相应的列表项仍然可见。这就是渲染管道的原因。因此,我需要找到一个li.nav-item,它的子项(?)是可见的。由于元素可见性是通过asp.net.visible属性在codebehind中设置的,因此它在DOM树中不可用。如果没有,则添加了管道。我决定使用属性。现在,我需要拿出一个jQuery代码片段,以便在元素不可见时删除管道。我需要删除哪个属性才能使项目不可见?如果不加载整页,可见元素是否可以不可见?如果没有,那么上面的代码应该可以工作。。。我仍然有三重管道的问题。我想我找到了问题的根源。在Codebehind中,我正在处理asp:hyperlink控件并隐藏它们。相应的列表项仍然可见。这就是渲染管道的原因。所以我需要找到一个li.nav-item,它的子(?)是可见的。我是对的,如果你发布了客户端html标记,你会更快地收到答案。我是对的,如果你发布了客户端html标记,你会更快地收到答案。