将javascript函数转换为jQuery
我有一些javascript我想转换成jQuery 我以为这很容易,但看来我错了 代码应该根据输入的文本量调整文本区域的大小 这是我的密码:将javascript函数转换为jQuery,javascript,jquery,Javascript,Jquery,我有一些javascript我想转换成jQuery 我以为这很容易,但看来我错了 代码应该根据输入的文本量调整文本区域的大小 这是我的密码: function haut() { if ($(this).scrollTop() > 0) aug(); } function aug() { var h = parseInt($(this).height()); $(this).height(h + 10); haut(); } function top() { $
function haut() {
if ($(this).scrollTop() > 0) aug();
}
function aug() {
var h = parseInt($(this).height());
$(this).height(h + 10);
haut();
}
function top() {
$(this).scrollTop(100000);
haut();
}
$(document).ready( function() {
$("#txt_test").keyup(function() {
haut();
});
$("#txt_test").focus(function() {
top();
});
});
这是原始代码:
function haut(idt) {
if (document.getElementById(idt).scrollTop > 0) aug(idt);
}
function aug(idt) {
var h = parseInt(document.getElementById(idt).style.height);
document.getElementById(idt).style.height = h + 10 +"px";
haut(idt);
}
function top(idt) {
document.getElementById(idt).scrollTop = 100000;
haut(idt);
}
$(document).ready( function() {
$("#txt_test").keyup(function() {
haut(this.id);
});
$("#txt_test").focus(function() {
top(this.id);
});
});
这里有一个JSFIDLE,如果它有帮助的话 您可以在keyup函数{…}中使用$this的原因;这是因为jQuery实现如何调用它。有关手动设置上下文的更多信息,请参见javascript的.call和.apply
在您的代码中,您没有使用haut.call,而是使用haut,这将不会设置此上下文的值。因此,当像$'*'.keyuphaut这样调用haut时,这意味着它与像$'*'.keyupfunction{haut;}一样调用haut时有所不同;。同样的情况也适用于您从haut打来的电话。请在提问时详细描述您的问题 到目前为止,我发现绑定处理程序的代码是错误的。应该是:
$(document).ready( function() {
$("#txt_test").keyup(haut);
$("#txt_test").focus(top);
});
只需将参数发送到aug
你用错了。而是传递元素:
function haut(element) {
if (element.scrollTop() > 0) aug(element);
}
function aug(element) {
var h = parseInt(element.height());
element.height(h + 10);
haut(element);
}
function top(element) {
element.scrollTop(100000);
haut(element);
}
$(document).ready(function() {
$("#txt_test").keyup(function() {
haut($(this));
});
$("#txt_test").focus(function() {
top($(this));
});
});
你正在失去视野。您可以使用: 德米特里的回答我认为最好的
$("#txt_test").keyup(haut);
$("#txt_test").focus(top);
2或者如果你想在回调中做更多的事情,你可以这样做
使用呼叫时:
$("#txt_test").keyup(function()
{
haut.call(this);
alert('...');
});
$("#txt_test").focus(function()
{
top.call(this);
});
那么您到底有什么问题呢?实际上没有理由将您的原始代码升级到jquery。您没有对jquery对象执行DOM对象无法执行的任何操作,您所做的只是使代码复杂化和性能下降
$("#txt_test").keyup(function()
{
haut.call(this);
alert('...');
});
$("#txt_test").focus(function()
{
top.call(this);
});