0

如何,甚至有可能this从函数中获取值?我制作了这个保存defaultValue函数的片段,但我想从函数外部直接在dom元素上读取它。那可能吗??

我在 jQuery 中做了这个:

$("input").val(function() {
    var $label = $("label[for='" + $(this).attr("id") + "']");
    this.defaultValue = $label.text();
    $label.hide()
    return this.defaultValue
}).click(function() {
    if ($(this).val() == this.defaultValue) {
        $(this).val("");
    }
}).bind("blur", function() {
    if ($(this).val() == "") {
        $(this).val(this.defaultValue);
    }
});

在此处查看实际操作:http: //jsfiddle.net/ZUZ3L/g6dMA/

4

4 回答 4

2

您可以使用 jQuery 的 .data() 函数将其保存到 DOM 中表示的元素:

在 pageLoad 上执行此操作:

$(this).data('defaultValue', $(this).val());

您可以稍后使用以下方法检索它:

alert($('#myElement').data('defaultValue');

...这将返回在页面加载时设置的值,而不是输入的当前值。

于 2012-10-09T07:52:10.773 回答
0

在您的 function$("input").val(function() {中,this指的是$("input")查询中的一个元素。
请注意$("input"),即使只有一个元素存在,它也会返回一个元素列表。用于.get()选择元素。
您可以defaultValue$("input").get(0).defaultValue. (假设你只想要一个元素)

于 2012-10-09T07:46:08.720 回答
0

试试这个:

<input onfocus="if (this.value==this.defaultValue) this.value = '';" onblur="if (this.value=='') this.value = this.defaultValue;" name="search" value="Search">
于 2012-10-09T07:47:42.820 回答
0

这些函数是回调函数。这意味着它们在事件触发时运行(来自 jQuery)。所以,this在这种情况下,实际上是由 jQuery 来决定的。在哪种情况下是事件绑定到的元素。

附带说明一下,您似乎正在寻找占位符属性(仅在 HTML5 中可用,但您可以找到旧浏览器的插件)

于 2012-10-09T07:49:28.730 回答