多个选择多个

时间:2014-08-05 18:17:32

标签: javascript jquery

需要有关Jquery多重选择的帮助。

这是代码

$.each(($("#reciprocitationAgreement option:selected:not([disabled]), #reciprocitationAgreement input")), function() {
     $(this).text();
});

每种循环都有两种类型的元素。 1 - 选择(选项) - 从选项元素获取文本 2 - 输入字段 - 从输入字段获取

有2个选定的元素。 有没有办法将同一代码块指向$(this, option).text();$(this, input).val()

4 个答案:

答案 0 :(得分:1)

这很简单,你可以在同一个功能中完成它,你不需要两个功能。只需检查元素的tagName是否为INPUT,然后相应地运行:

$.each(($("#reciprocitationAgreement option:selected:not([disabled]), #reciprocitationAgreement input")), function() {
     if (this.tagName == 'INPUT') {
         $(this).val(); // ...
     } else {
         $(this).text(); // ...
     }  
 });

答案 1 :(得分:1)

$(function() {
  var data = [];
    $.each([ $("#reciprocitationAgreement option:selected:not([disabled])").text(), $("#reciprocitationAgreement input").val() ], function(k, v) {
       data.push(v);
      // do stuff with `data` , and / or ,
      // do stuff with `v`
      console.log(data);
      $("body").append(v);
    });
});

jsfiddle http://jsfiddle.net/guest271314/77jLN/

答案 2 :(得分:0)

在找到2种类型的输入

中将代码移到函数内部
 $.each(($("#reciprocitationAgreement option:selected:not([disabled])")), function() {
         doSomething($(this).text())
     });

 $.each(($("#reciprocitationAgreement input")), function() {
         doSomething($(this).val())
     });

答案 3 :(得分:0)

如果您决定添加不同的类型,您还可以创建一个JQuery扩展方法,以便将来扩展它。它还具有在许多地方使用的优点,可以通过说$("selectorgoeshere").getValue()只用一行来调用。

$.fn.getValue = function () {
    var returnValue = "";
    switch ($(this)[0].nodeName) {
        case "INPUT":
            returnValue = $(this).val();
            break;
        case "OPTION":
            returnValue = $(this).text();
            break;
        default:
            returnValue = $(this)[0];
            break;
    } // end switch
    return returnValue;
};
$(function () {
    $("#clickMe").click(function (e) {
        $("#reciprocitationAgreement option:selected:not([disabled]), #reciprocitationAgreement input").each(function () {
            console.log($(this).getValue());
        });
    });
});

这是一个工作小提琴:http://jsfiddle.net/xDaevax/Z89vW/