1

我有一个 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);
            }
        });
    });
});

代码html在这里

4

4 回答 4

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);
            }
        });
    });
});
于 2012-05-21T17:20:34.597 回答
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,我们可能会给您一个更清晰的答案。

于 2012-05-21T17:28:49.193 回答
0

您可以只使用id来分配选项,这样您甚至不需要检查哪些已更改:

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

我还没有测试过,但我不明白为什么那行不通(除非我错过了什么:|)

于 2012-05-21T17:30:22.863 回答
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);

        });
    });
});
于 2012-05-21T17:31:08.883 回答