jquery对象 赋值给变量 变量调用jquery方法,这能行吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jquery对象 赋值给变量 变量调用jquery方法,这能行吗相关的知识,希望对你有一定的参考价值。

比如:

<div class="hided"> 我要隐藏 </div>

var h = $(".hided");
h.hide(); //这样能行吗
我试过会出错,那错在哪呢,应该怎么改。
谢谢!

没错啊,你的页面不是没出现我要隐藏的文字了,对象是可以直接赋值给变量的,由于的你变量直接给定隐藏,所以文档加载完后又隐掉了,所以就看不到文字了,如果你给对象添加点击事件会更好理解追问

那要是一个jquery对象数组的赋值呢,比如:
hide1
hide2
.....
var ddiv = $(".hid");
ddiv[0].hide(); //这样运行时错误了。
其实我真正想问的是这个,难道$(".hid")返回的不是一个数组吗,这个怎么破,谢谢。

追答

是啊,,但是jq没有这种写法,jq的写法是ddiv.eq(0).hide();或者直接循环全部赋值啦~~~

参考技术A var h = $(".hided");
h.hide();
$(".hided") 赋值给h后,h不是jquery对像。h只是一个js变量,这个变量是一个html元素集合。所以后面这句h.hide(),应该会报错。因为js并没有hide()这个方法,hide()这个方法必须用在jquery对像元素后面。
var h=$(".hided");这样获取元素给变量,返回的是一个html元素数组集合
var hq=$("一个jquery文本变量"); 这样jquery返回的是一个jq对像。
参考技术B 这个写法是没错的,但是你这样的话一开始出来就会隐藏,可以这样写
var h = $(".hided");
h.click(function()
h.hide());
这样就有你要的效果了追问

那要是一个jquery对象数组的赋值呢,比如:
hide1
hide2
.....
var ddiv = $(".hid");
ddiv[0].hide(); //这样运行时错误了。
其实我真正想问的是这个,难道$(".hid")返回的不是一个数组吗,这个怎么破,谢谢。

jquery ajax success 函数 异步调用方法中不能给全局变量赋值的原因及解决办法

在调用一个jquery的ajax方法时我们有时会需要该方法返回一个值或者给某个全局变量赋值,可是我们发现程序执行完后并没有获取到我们想要的值,这时很有可能是因为你用的是ajax的异步调用async:true(默认情况),如:

function ManageCommentText(text) {
    var result = text;
    $.ajax({
        data: "get",
        url: "GetComments.aspx",
        data: "type=getText&commentText=" + text,
        cache: false,
        async: false,
        success: function (data) {
            result = data; // 注意这里不可以在前面加var 关键字
        }
    })
    return result;

以上方法是ajax的同步调用,只有在获取到了data值并赋值给result以后才会返回result完成该方法的调用。若设为async:true,
则会未等到获取data值就已经返回了result。

另一个解决办法就是将你的代码直接写到success方法里。(根据你的业务并不是所有的都可以直接写到success里的)。

以上是关于jquery对象 赋值给变量 变量调用jquery方法,这能行吗的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么给label赋值

在 $.post 中创建动态变量赋值 - JQuery

jquery ajax给外部变量赋值 async: false

ajax方法如何给全局变量赋值

jquery.Ajax回调成功后数据赋值给全局变量的问题

jquery ajax 在回调函数内 给变量赋值,为啥返回不出去?那要怎么处理