繁体   English   中英

如何通过jQuery隐藏控件组?

[英]How can I invisiblize groups of controls via jQuery?

在我的Sharepoint项目/ Web部件/网页中,我使用* .ascx.cs文件中的C#动态创建页面元素/控件。

在* .ascx文件中,我使用jQuery来响应页面上发生的事件(选择,复选框状态的更改等)。

我需要有条件地隐藏页面上的控件/元素组。 具体来说,如果用户选中某个复选框,我可以“删除”该页面的整个行,在该场景中,该行不适用于她。

我怎样才能做到这一点? 我有这个起点:

/* If the select "Yes" (they are seeking payment for themselves, as opposed to someone else), omit (invisibilize) sections 2 and 3 on the form */
$(document).on("change", '[id$=ckbxPaymentForSelf]', function () {
    var ckd = this.checked;
    if (ckd) {
        // what now?
    }
});

我可以做头发拉出的方式(这对我来说非常痛苦,因为我的头发几乎和押沙龙一样多),并设置每个单独的元素,如下:

if (ckd) {
    var $this = $('[id$=txtbxthis]');
    var $that = $('[id$=txtbxthat]');
    var $theother = $('[id$=txtbxtheother]');
    . . . // store a reference to all the other to-be-affected elements in vars
    $this.visible = false; // <= this is pseudoscript; I don't know what the jQuery to invisiblize an element is
    $that.visible = false; // " "
    $theother.visible = false; // " " 
    . . . // invisiblize all the other to-be-affected elements 
}

当然有更优雅/更好的方式!

是将所有条件不可见的元素分配给一个特定的类,然后调用分配给该类的每个元素,或者是什么?

此外,我希望这个现在看不见的地带以前使用过的区域“走开”或“卷起来”,不要坐在那里,只有一个空白的凝视,打哈欠的峡谷,或戈壁沙漠般的无边无际的广阔。

有很多方法可以做到这一点。 但是在你的jquery实现中,我会用数据标签来装饰元素,这些数据标签将告诉代码隐藏和显示哪些元素。

<input data-group="1" type="text" />
<input data-group="2" type="text" />

var $group1 = $('*[data-group="1"]');
var $group2 = $('*[data-group="2"]');
if (ckd) {
  $group1.hide(); 
  $group2.show(); 
}
else{
 $group2.hide(); 
 $group1.show(); 
}

你也可以用css类做同样的事情,但我更喜欢使用data属性

如果可以使用类对控件进行分组,则可以选择需要在该特定场景中隐藏的类,并使用hide()函数:

if (ckd) {
    var cls = getClassForCurrentScenario();
    $("." + cls).hide(); //slideUp() would be an animated alternative
}

例如,如果控件可以在div分组,那么您只需要隐藏该元素:

if (ckd) {
    var id = getElementIdForCurrentScenario();
    $("#" + id).hide(); //slideUp() would be an animated alternative
}

这实际上取决于您如何设置将控件分组为“目标组”,以便您以后可以有效地访问它们。

你可以像这样隐藏一个元素:

$('...').hide();

或者你可以用以下方式向上滑动:

$('...').slideUp();

获得一个很好的滑动动画。

另外,在您的情况下,您可以同时对多个元素执行此操作:

$('[id$=txtbxthis], [id$=txtbxthat], [id$=txtbxtheother]').slideUp();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM