jQuery变量保存为JavaScript var意外行为

时间:2012-06-04 14:33:25

标签: javascript jquery variables

在脚本中我有以下内容:

$('#image-slider').empty();

在我的应用程序中清空了图像滑块元素。

我想在我的函数中直接使用ID引用,所以我在脚本的顶部声明了一些变量,包括:

var globals = [];
globals.markup = [];
globals.values = [];
globals.markup.image_slider = $('#image_slider');

然而,当我现在打电话:

globals.markup.image_slider.empty();

滑块 NOT 已清空。

任何想法我做错了什么?

编辑:

一个完整的例子:

$(document).ready(function(){
  var projects = <?= $json; ?>;
  var globals = [];
  globals.markup = [];
  globals.values = [];

  globals.markup.title = $('#title');
  globals.markup.image_slider = $('#image_slider');


  function load_project(f)
  {
      var potential = window.location.hash.substring(1);

      $.each(projects, function(i, project){

          if (project.permalink == potential)
          {
              // Manage stats and fields
              $('#title').text(project.title);
              $('#agency').text(project.agency);
              $('#description').text(project.description);
              $('#website_url').attr('href', project.website_url);

              // Manage images
              globals.markup.image_slider.empty();
    .....
编辑:我是个白痴。这是一个简单的错字。 image_slider应该是image-slider ..我的不好。

2 个答案:

答案 0 :(得分:0)

看起来您的变量初始化脚本在创建元素之前运行,因此分配给globals.markup.image_slider的jquery集合为空。您需要将该代码放入DOMReady脚本中:

$(function() { globals.markup.image_slider = $('#image_slider'); });

更新:从代码示例中,看起来您已经这样做了。尝试移动它甚至更晚 - “加载”事件($(window).bind(“load”,...);) - 或检查你的逻辑以确保元素由文档呈现,而不是在以后动态创建你的“load_project”在哪里。

答案 1 :(得分:0)

正如@davin正确建议的那样,代码很好,问题出在其他地方。我不小心输入了image_slider而不是image-slider,因为div在标记中被识别。