如何或甚至可以从函数中获取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/
答案 0 :(得分:2)
您可以使用jQuery的.data()函数将其保存到DOM中表示的元素:
在pageLoad上执行此操作:
$(this).data('defaultValue', $(this).val());
您可以稍后通过以下方式检索它:
alert($('#myElement').data('defaultValue');
...将返回pageload设置的值,而不是输入的当前值。
答案 1 :(得分:0)
在您的函数$("input").val(function() {
中,this
引用$("input")
查询中的一个元素。
请注意,$("input")
将返回元素列表,即使只存在一个元素。使用.get()
选择元素
您可以从defaultValue
访问$("input").get(0).defaultValue
。 (假设你只想要一个元素)
答案 2 :(得分:0)
试试这个:
<input onfocus="if (this.value==this.defaultValue) this.value = '';" onblur="if (this.value=='') this.value = this.defaultValue;" name="search" value="Search">
答案 3 :(得分:0)
这些函数是回调函数。这意味着它们在事件被触发时运行(来自jQuery)。所以,在这个上下文中this
实际上取决于jQuery来决定..在这种情况下是绑定事件的元素。
在旁注中,看起来您正在寻找占位符属性(仅在HTML5中可用,但您可以找到旧版浏览器的插件)