スパンと入力を検出し、$().text() と $().val() をいつ使用するかを分類する val2 という Jquery プラグインを作成しました。スパンで val() を使用した後、額を平手打ちして「もちろん、ダミー... それはスパンだ!」と言うだけでなぜ壊れたのか疑問に思いました。このプラグインを作成しました:
$.fn.val2 = function (newVal) {
// Jquery Plugin to improve upon $().val() and agnostically handle get/set of values for a span or input (type="text")
// http://learn.jquery.com/plugins/basic-plugin-creation/
// use, get mode: var val = $("#" + id).val2();
// use, set mode: $("#" + id).val2("fred");
if (this !== undefined) {
// newVal indicates set vs get mode
if (newVal === undefined) {
var ret = "";
if (this.attr("value") === undefined && this.prop("value") === undefined)
ret = this.text(); // this is a span
else
ret = this.val(); // this would be an input
return ret;
}
else {
if (this.attr("value") === undefined && this.prop("value") === undefined)
this.text(newVal); // this is a span
else
this.val(newVal); // this would be an input
}
}
};
使用例:
モードを取得:
var txt = $("#MySpan").val2();
var txt = $("#MyInput").val2();
モードを選択する:
$("#MySpan").val2("fred");
$("#MyInput").val2("fred");