根据选择框更改 DIV 可见性
Changing DIV visibility based on select box
我有一个div,只有在从下拉菜单中选择某个值时才想显示(在这种情况下,它是custom-css
(
在小提琴(http://jsfiddle.net/obmerk99/8xnzh/1/(上它工作正常...
jQuery(document).ready(function() {
jQuery("#k99-custom-1").change(function () {
jQuery("#k99-custom-1 option:selected").each(function ()
{
if( jQuery(this).attr("value") == "custom-css")
{
jQuery("#customcss").show();
}
else
{
jQuery("#customcss").hide();
}
});
}).change();
});
但是在真实页面中,选择下拉列表实际上是使用"添加选项"按钮动态生成的,因此某些(第一个(选择在页面加载(文档就绪(时不存在,我认为这就是它不起作用的原因。
在这里查看完整的操作(不起作用(:http://jsfiddle.net/obmerk99/ZcAzy/1/
如果选择了"custom-css"值,为了显示div,我做错了什么?(现在它设置为仅适用于第一个(或第二个( - 但让它与所有添加的选择列表一起使用会很棒.. (
尝试使用 delegation
,如下所示:
jQuery(function() {
// Here, `.on` is used in its `delegate` form, where it asigns an event to any
// element matching the selector
// regardless when it was added to the DOM
jQuery(document).on('change', "[id^='k99-custom-']", function(e) {
jQuery("[id^='k99-custom-'] option:selected").each(function(i) {
if (jQuery(this).attr("value") == "custom-css") {
jQuery("#customcss").show();
}
else {
jQuery("#customcss").hide();
}
});
})
})
我刚刚在对另一个答案的评论中注意到,您尝试了这样的事情。您做错的是将选择器[id^='k99-custom-']
event
委托给[id^='k99-custom-']
,如您所见,它本身就是它自己。要委派,您需要分配给父元素或document
本身,如我的示例所示。最常见的用途是简单地使用$(document).on(...
例
了解更多关于.delegate
及其.on
形式的信息!
您需要
使用 on
函数而不是仅change
来绑定到动态元素。
$('body').on('change','#k99-custom-1',function(){
//function here
});
相关文章:
- D3在一个调用中绘制不同的SVG形状,没有可见性
- jQuery css可见性在load方法中不起作用
- 页面可见性API实际上支持操作系统屏幕锁定吗
- 有没有一种方法可以从隐藏的可见性(CSS,JS)中获得淡入效果
- JavaScript可见性不起作用('隐藏'起作用,'可见'不起作用)
- 当Div可见时使用Javascript
- 从内部回调的可见性
- Openlayers 3为了可见性而绑定到Vector层的复选框没有任何作用
- 需要切换2个DIV的DIV可见性
- 如何切换DIV元素的可见性
- 滚动上的交替 DIV 可见性
- 如何根据另一个 DIV 内容的可见性显示 DIV 内容
- 无法手动将 DIV 元素上的可见性设置为 true.“TH:IF”问题
- 使用 jquery 根据链接单击切换 DIV 可见性
- 根据选择框更改 DIV 可见性
- 在gridview事件处理程序中切换DIV可见性的代码不工作
- 当次要Div '的可见性被设置为'none'时,如何改变Div对齐方式
- 用JavaScript改变DIV可见性
- javascript中的Div可见性
- 切换DIV's的可见性点击