解决:http://jsfiddle.net/arkjoseph/swDy5/20/
目标是创建一个amazon样式的搜索框,它将减少一个页面上的多个输入搜索/筛选字段所需的空间。
搜索流程:
从搜索表单中获取标签。
将标签附加到选择选项字段。
在“选择更改”中,获取所选值。
如果选中val与标签匹配,则显示最近的div.input、div.option (这是所有错误的地方)。由于我搜索数组,我认为我无法找到标签附近最近的隐藏容器。有什么建议吗?)
到目前为止,我已经将新的select值传递给一个数组,并试图在更改中找到匹配的值。
$("body").append("<select id='selopt'></select>");
var _op = [];
var _se = "";
$(".views-exposed-widget label").each(function(){
var text = $(this).text();
_se += '<option value="'+ text +'">'+ text +'</option>';
_op.push($(this).text());
// Monthly Release,Title,New Provider/Show Name
});
$("#selopt").change(function() {
$("form .views-exposed-widget .views-widget").fadeOut();
_op[$(this).val()].next('div').css("z-index","100").fadeIn();
});
更新的Jquery:http://jsfiddle.net/arkjoseph/swDy5/14/
发布于 2013-07-31 22:04:53
这将显示距离下拉框最近的div也是隐藏的。
$("#selopt").change(function() {
$(this).closest('div:hidden').show();
});
更新
根据您的评论,这应该会让您接近。我们可以创建文本字典到实际的标签中,而不是将文本推入数组中。然后,当选择更改时,使用标签查找最接近的div。就像这样:
$("body").append("<select id='selopt'></select>");
var _op = {};
var _se = "";
$(".views-exposed-widget label").each(function(){
var text = $(this).text();
_se += '<option value="'+ text +'">'+ text +'</option>';
_op[$(this).text()] = $(this);
// Monthly Release,Title,New Provider/Show Name
});
$("#selopt").change(function() {
_op[$(this).val()].closest('div:hidden').show();
});
如果标签的文本有特殊字符,这可能会产生意外的结果。在这种情况下,我们可以修改数组更多,但仍然有可能。
https://stackoverflow.com/questions/17951910
复制相似问题