我已整合jquery-asmselect ,并希望能够使用页面上的其他链接选择选项。要想象我正在尝试做什么,您可以查看页面here
这是我用于asmselect的jquery代码:
$(document).ready(function() {
$("#CategoryID").asmSelect({
addItemTarget: 'bottom',
animate: true,
highlight: false,
sortable: false
}).after($("<a href='#' class='select-all'>select all neighborhoods</a>").click(function() {
$("#CategoryID").children().attr("selected", "selected").end().change();
return false;
}));
$("#search_SubCategoryID").asmSelect({
addItemTarget: 'bottom',
animate: true,
highlight: false,
sortable: false
}).after($("<a href='#' class='select-all'>select all cuisines</a>").click(function() {
$("#search_SubCategoryID").children().attr("selected", "selected").end().change();
return false;
}));
});
答案 0 :(得分:0)
首先,您需要识别您正在点击的邻居。添加rel(如选项中)可能有效:
...
<li class="evillage">
<a href="#" rel="asm0option0">East Village/LES</a>
</li>
...
然后,添加此脚本:
$(".search-map a").click(function(event) {
event.preventDefault();
var hood = $(this).attr('rel');
var $option = $('option[rel=' + hood + ']');
$option.change();
return false;
});
基于this asmselect示例。您只需根据点击的链接获取对应选项,然后调用其上的change();
触发器。
<强>编辑:强>
以上代码失败了很长时间:P这是新版本(使用working fiddle):
$(".search-map a").click(function() {
var $city = $(this).html();
var $rel = $(this).attr('rel');
var disabled = $('#asmSelect0 option[rel=' + $rel + ']:first').attr('disabled');
if (typeof disabled !== 'undefined' && disabled !== false) {
return false;
}
var $option = $('<option></option>').text($city).attr({'selected': true, 'rel': $rel});
$('#asmSelect0').append($option).change();
$('#asmSelect0 option[rel=' + $rel + ']:first').remove();
return false;
});
我不得不做一些我不喜欢的事情,但是在没有与插件冲突的情况下我找不到任何其他方法。无论如何,它并没有那么糟糕。基本上我得到邻域的名称,rel来识别选项,生成新的<option>
,change();
,并删除旧的选项标签。插件不喜欢尝试更改标签本身而不创建新标签...我不得不添加if (...)
的东西,因为添加邻居(在选择中禁用它),然后再次点击它邻居,它在选择上启用它(我们不希望这样,因为它已经被选中)。在这种情况下,如果我们点击禁用邻居的链接,我们将什么也不做,选项将保持不变。
很抱歉,如果我的解释很糟糕,我花了一段时间来解决问题,我不得不再次建立一切,我觉得缺乏英语xD希望它有效!