jQuery检查哪个选择已经触发

时间:2012-05-21 17:14:22

标签: jquery

我有一个jQuery函数,可以触发两个选择标签中的任何一个更改,但我的问题是我在检查哪个选择标签已经解雇的条件中做了什么错误

$(document).ready(function(){
    $('#aqQuestionIoli .ConceptSelector1,#aqAnswerIoli .ConceptSelector1').on('change',function(){
        var concetp = $(this).val();
        alert(concetp);
        $.getJSON("http://localhost/Mar7ba/InformationObject/getIOsForConcept/"+concetp+"/TRUE",function(data){
            var options = '<option>Select IO</option>';
            for(var i=0;i<data.length;i++){
                options+="<option>"+data[i]+"</option>";
            }
            if ($('#aqQuestionIoli .ConceptSelector1').length){
                $("#aqIoQuesSelector").html(options);
            }
            if ($('#aqAnswerIoli .ConceptSelector1').length){
                $("#aqIoAnswerSelector").html(options);
            }
        });
    });
});

code html here

4 个答案:

答案 0 :(得分:0)

如果你的意思是这一部分:

            if ($('#aqQuestionIoli .ConceptSelector1').length){
                $("#aqIoQuesSelector").html(options);
            }
            if ($('#aqAnswerIoli .ConceptSelector1').length){
                $("#aqIoAnswerSelector").html(options);
            }

他们没有检查哪个选择标签已被解雇。它只是检查文件是否有那个元素。

尝试

$(document).ready(function(){
    $('#aqQuestionIoli .ConceptSelector1,#aqAnswerIoli .ConceptSelector1').on('change',function(){
        var concetp = $(this).val();
        alert(concetp);
        var thisid = this.id;
        $.getJSON("http://localhost/Mar7ba/InformationObject/getIOsForConcept/"+concetp+"/TRUE",function(data){
            var options = '<option>Select IO</option>';
            for(var i=0;i<data.length;i++){
                options+="<option>"+data[i]+"</option>";
            }
            if (thisid == 'aqQuestionIoli')){
                $("#aqIoQuesSelector").html(options);
            }
            if (thisid == 'aqAnswerIoli'){
                $("#aqIoAnswerSelector").html(options);
            }
        });
    });
});

答案 1 :(得分:0)

$(document).ready(function(){
    $('#aqQuestionIoli .ConceptSelector1,#aqAnswerIoli .ConceptSelector1').on('change',function(){
        var concetp = $(this).val();
        alert(concetp);
        var context = this;
        $.getJSON("http://localhost/Mar7ba/InformationObject/getIOsForConcept/"+concetp+"/TRUE",function(data){
            var options = '<option>Select IO</option>';
            for(var i=0;i<data.length;i++){
                options+="<option>"+data[i]+"</option>";
            }
            if (context === $('#aqQuestionIoli .ConceptSelector1')[0]){
                $("#aqIoQuesSelector").html(options);
            }
            if (context === $('#aqAnswerIoli .ConceptSelector1')[0]){
                $("#aqIoAnswerSelector").html(options);
            }
        });
    });
});

看一下这个简单的例子:http://jsfiddle.net/6zsnx/1/ 同样,有很多方法可以做到这一点。如果我们能看到您的HTML,我们可能会给您一个更清晰的答案。

答案 2 :(得分:0)

您可以使用id分配选项,这样您甚至无需检查哪些内容已更改:

var id = $(this).attr('id');
$('#' + id).html(options);

我没有测试过,但我不明白为什么那样不行(除非我错过了一些东西:|)

答案 3 :(得分:0)

$(document).ready(function(){
    $('#aqQuestionIoli .ConceptSelector1,#aqAnswerIoli .ConceptSelector1').on('change',function(){
        var concetp = $(this).val();
        var select = $(this).attr('id');
        console.log(select);
        var $this = $(this);
        // the value of select can tell which select was fired.
        $.getJSON("http://localhost/Mar7ba/InformationObject/getIOsForConcept/"+concetp+"/TRUE",function(data){
            var options = '<option>Select IO</option>';
            for(var i=0;i<data.length;i++){
                options+="<option>"+data[i]+"</option>";
            }
            $this.html(options);

        });
    });
});