2010-02-17 214 views
1

非常奇怪的事情發生在下拉列表的「更改」事件中。選擇更改事件觸發多次

基本上我有一個下拉列表,關於我必須做一些跨域的web服務調用的變化。這個調用是從javascript本身進行的。

當我在'select'列表中改變一個項目時,第一次改變事件只被觸發一次。下次再來兩次,它會像這樣增長。

任何線索爲什麼它的行爲是這樣的?

如果代碼需要引用我可以共享。但它是一個簡單的'選擇'列表和'更改'事件處理程序。

$("#ArtifactSort > select").change(function() {   

    var rankField= ""; 
    rankField = $("#ArtifactSort > select option:selected").text(); 

    alert('within select change event artifact: '+ rankField); 

    //Making the text little lighter and showing the loading icon. 
    //$("#ArtifactPetalContentUL").css("filter", "alpha(opacity: 30)"); 
    $loadingIconForArtifact = addLoadingIcon("ArtifactPetalContentUL", "Artifact"); 

    var refinedStoresLocal= new Array(); 
    for (var storeIndex in _searchResponseForArtifact.searchResult.searchRequestProcessed.stores) { 
     refinedStoresLocal.push(_searchResponseForArtifact.searchResult.searchRequestProcessed.stores[storeIndex].name); 
    } 

    var refinedFiltersLocal = new Array(); 
    for (var filterIndex in _searchResponseForArtifact.searchResult.searchRequestProcessed.filters) { 
     refinedFiltersLocal.push(_searchResponseForArtifact.searchResult.searchRequestProcessed.filters[filterIndex]); 
    } 

    //rankfield. 
    var rankLocal=new Array(); 
    rankLocal.push(new RankingField(rankField, 1, 0)); 
    //Request object and WS Call. 
    var _searchRequestForArtifactLocal = getArtifactSearchRequestObject(_queryStringLocal, _memberId, _communityId, _pageNumber, _pageSize, propertiesForArtifact, refinedStoresLocal, ClassificationClusteringObjectsForArtifact, refinedFiltersLocal, rankLocal); 
    getSearchResponse("successcallForArtifact", _searchRequestForArtifactLocal); 
}); 

謝謝 Subrat。

回答

5

必須從改變處理程序中被捆綁了新的處理程序。所以,每次運行時,它增加了處理器的另外一個實例,下一次要執行..

向我們展示了處理程序中分配給更改事件(你如何做到這一點),獲得更詳細的答案..

[更新]

從您的代碼似乎一切都很好..請檢查兩個函數調用,雖然,(addLoadingIcongetSearchResponse)的情況下,他們做任何的jQuery事件綁定,這可能無意中適用於選擇對象..

還要檢查你的RankingField構造的情況下,它結合任何事件......

+0

我有一個類似的問題,除了我從動態加載的內容綁定到靜態對象的功能。從動態內容看來,我似乎只綁定了一次,但因爲我綁定了靜態控件,所以每次加載動態內容的新實例時都會累積事件:/ – Triynko

0

我所描述的相同問題OP。我發現Chrome Dev Tools幫助我驗證了這是一個多重事件處理程序問題。打開開發工具,使用元素選擇器選擇有問題的「選擇」對象,然後檢查事件監聽器選項卡上的更改處理程序。