选择更改事件多次触发

时间:2010-02-17 11:58:01

标签: javascript

下拉列表中的“更改”事件发生了非常奇怪的事情。

基本上我有一个下拉列表,在更改时我必须做一些跨域Web服务调用。此调用是从javascript本身进行的。

第一次更改“选择”列表中的项目时,更改事件仅触发一次。下次两次,它会像这样增长。

任何线索为什么它会像这样?

如果需要参考代码我可以分享。但它是一个简单的“选择”列表和“更改”事件处理程序。

$("#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。

2 个答案:

答案 0 :(得分:5)

您必须从更改处理程序中绑定一个新的处理程序。因此,每次运行时,它都会添加一个额外的处理程序实例,以便下次执行..

向我们展示您为更改事件指定的处理程序(以及如何执行此操作)以获得更详细的答案。

<强> [更新]

从你的代码中看起来一切都很好..请检查你调用的两个函数,(addLoadingIcongetSearchResponse),以防它们执行任何jQuery事件绑定,这可能会无意中应用于select对象..

同时检查RankingField构造函数,以防它绑定任何事件......

答案 1 :(得分:0)

我遇到了OP所描述的相同问题。我发现Chrome Dev Tools帮助我验证它是一个多事件处理程序问题。打开开发工具,使用元素选择器选择&#39;选择&#39;有问题的对象,并检查更改处理程序的事件监听器选项卡。

相关问题