需要有关Jquery多重选择的帮助。
这是代码
$.each(($("#reciprocitationAgreement option:selected:not([disabled]), #reciprocitationAgreement input")), function() {
$(this).text();
});
每种循环都有两种类型的元素。 1 - 选择(选项) - 从选项元素获取文本 2 - 输入字段 - 从输入字段获取值
有2个选定的元素。
有没有办法将同一代码块指向$(this, option).text();
和$(this, input).val()
?
答案 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);
});
});
答案 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/