2011-12-11 138 views
0

我已經集成了jquery-asmselect,並且希望能夠使用頁面上的其他鏈接選擇選項。爲了形象我想要做的,你可以查看頁面here使用鏈接和asmselect選擇選擇表單選項

這裏是jQuery代碼我使用asmselect:

$(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

對不起,我不理解。你能否澄清你的意思:「我希望能夠使用頁面上的其他鏈接選擇選項。」 ? –

+1

嘿@AllenZ。 ,在我的頁面http://dev.mybrunchi.com上,我想使用左側的地圖鏈接來定位鄰居選擇選項。我試過一些其他的JavaScript代碼,但它打破了asmselect代碼。我正在尋找一種能夠保持asmselect功能的解決方案。 – heath1224

+0

謝謝。我明天去看看。 –

回答

0

首先,你需要確定點擊你最近的鄰居。將rel(如在選項)可能的工作:

... 
<li class="evillage"> 
    <a href="#" rel="asm0option0">East Village/LES</a> 
</li> 
... 

然後,添加這個腳本:

基於 this asmselect例如
$(".search-map a").click(function(event) { 
    event.preventDefault(); 
    var hood = $(this).attr('rel'); 
    var $option = $('option[rel=' + hood + ']'); 

    $option.change(); 
    return false; 
}); 

。您只需根據點擊的鏈接獲取對應的選項,然後調用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希望它的作品!

+0

我試過了,但無法啓動它。我可能沒有指定rel的正確值? – heath1224

+0

這不是你的錯,它與插件衝突:(這是苛刻的,但我想我終於明白了:P請參閱我的問題編輯! – scumah

+0

完美!謝謝@scumah!看到它在這裏行動:http: //dev.mybrunchi.com – heath1224