【问题标题】:jQuery selector caching issuejQuery选择器缓存问题
【发布时间】:2012-08-29 09:16:39
【问题描述】:

问题是,当我每次编写 HTML 标签的 id 时,下面的代码都可以正常工作。但是当我缓存它们时,它不会。我错过了什么?

这是我的代码:

var NewFormContainer=$("#NewUserFormContainer"), opener=$("#nufcOpen"), closer=$("#nufcClose"), NewForm=$("#NewUserForm");
$(function() {
    $( "#userType" ).buttonset();
    $(".btn").button();

    closer.button({
        icons: {
            primary: "ui-icon-closethick"
        }, text: false
    }).click(function(){
        NewFormContainer.slideUp("slow");
    });
    opener.click(function(){
        NewFormContainer.slideDown("slow");
    });
});

顺便说一句,控制台没有错误。我也在用jQ-UI

【问题讨论】:

    标签: javascript jquery jquery-ui caching jquery-selectors


    【解决方案1】:

    dom 准备好时,您需要cache 他们。

    $(function() {
        $( "#userType" ).buttonset();
        $(".btn").button();
    
        var NewFormContainer=$("#NewUserFormContainer"),
            opener=$("#nufcOpen"),
            closer=$("#nufcClose"),
            NewForm=$("#NewUserForm");
    
        closer.button({
          icons: {
            primary: "ui-icon-closethick"
          }, text: false
        }).click(function(){
            NewFormContainer.slideUp("slow");
        });
    
        opener.click(function(){
            NewFormContainer.slideDown("slow");
        });
    });
    

    【讨论】:

      【解决方案2】:

      当您缓存它们时,它们会在 document.ready 之前被评估。试试这个:

      var NewFormContainer="#NewUserFormContainer", opener="#nufcOpen", closer="#nufcClose", NewForm="#NewUserForm";
      $(function() {
        opener = $(opener);
        closer = $(closer);
        NewFormContainer = $(NewFormContainer);
        NewForm = $(NewForm);
        ...
      

      【讨论】:

        猜你喜欢
        • 2011-04-04
        • 2011-10-31
        • 2010-12-01
        • 2010-11-25
        相关资源
        最近更新 更多