我正在使用Joomla的新SubForm代码。这允许用户复制一组输入并重复使用它们。基本上是一种可重复的形式。 此表单创建以下结构。
<div class="subform-repeatable-group">
<div class="control-group jform_params__content__content0__dc_subheader-cg"></div>
<div class="control-group jform_params__content__content0__dc_typeofcontent-cg"></div>
<div class="control-group jform_params__content__content0__dc_toc_image-cg"></div>
</div>
问题是SubForm是在父表单中加载的,但Joomla将其视为一个独立的表单。因此,正常的显示/隐藏功能不再起作用。所以我必须创建自己的。
这是生成的选择:
<select id="jform_params_theme_selection" name="jform[params][theme_selection]" class="chzn-done">
<option value="3dperspective" selected="selected">3D Perspective</option>
<option value="default">Default</option>
<option value="notheme">Select a theme!</option>
</select>
我已经获得了一段代码,用于检查是否选择了父窗体上的选择值。
$('#jform_params_theme_selection').bind('change', function (e) {
if( $('#jform_params_theme_selection').val() == 'notheme') {
} else if( $('#jform_params_theme_selection').val() == 'default') {
} else if( $('#jform_params_theme_selection').val() == '3dperspective') {
}
}).trigger('change');
现在我可以为每个元素进行一次手动添加,如下所示:
$('[class$="__dc_typeofcontent-cg"]').hide();
但必须有更好的方法。
.hide()
类中包含以下字母/符号的每个项目上使用__dc_
函数,并将其作为.parents(.subform-repeatable-group)
__dc_
但被称为__threed_
所以我必须能够定义字母/符号。像往常一样,每当我得到更多结果时,我都会继续搜索和更新这篇文章。
答案 0 :(得分:1)
可以使用filter()
之类的内容:
var cGroups = $('.subform-repeatable-group .control-group');
var hideTheme = '_dc';
var showTheme = '_threed';
cGroups.filter(function(){
return this.className.indexOf(hideTheme )>-1
}).hide()
cGroups.filter(function(){
return this.className.indexOf(showTheme )>-1
}).show()
的 DEMO 强>
答案 1 :(得分:0)
你的问题有点令人费解,所以我专注于你想要的东西。
假设您无法控制Joomla在那里抛出的类,无论您需要构建一种捕获父类和您正在寻找的子子字符串的方法。但假设你有这两个,你可以使节目隐藏一点通用。你总是可以告诉jQ寻找父母中有子串的孩子。
$("[class*='"+searchclass+"']",parent)
答案 2 :(得分:0)
最有效的方法是charlietfl建议的方法,但还有另一种解决方法。
(function ($) {
$(document).ready(function() {
$('#jform_params_theme_selection').bind('change', function (e) {
if( $('#jform_params_theme_selection').val() == 'notheme') {
} else if( $('#jform_params_theme_selection').val() == 'default') {
$( ".subform-repeatable-group div[class*='__threed_']" ).hide();
$( ".subform-repeatable-group div[class*='__dc_']" ).show();
} else if( $('#jform_params_theme_selection').val() == '3dperspective') {
$( ".subform-repeatable-group div[class*='__threed_']" ).show();
$( ".subform-repeatable-group div[class*='__dc_']" ).hide();
}
}).trigger('change');
});
})(jQuery);
基本上,您使用*
选择器并使用您创建的选项:
$( ".subform-repeatable-group div[class*='__threed_']" ).hide();
我添加了这个,因为它在某些情况下可能有用,即使我使用charlietfl的答案。