jquery对象不是由css #id形成的

时间:2013-11-15 19:04:24

标签: javascript jquery

所以我试图引入一个css id作为Jquery对象。

我带来一个按钮并为其添加一个事件处理程序:

test.js:

var infobutton = $('#infos');

infobutton.on('click', showinfo);

  function showinfo() {
    if (state !== 'info') {
      setstate('info');
    } else {
      setstate('play');
    }
    //pause timer
    startTimer = false;
  }

test.css:

.navbutton {
  position: absolute;
  top: 5px;
  display: block;
  right: 5px;
  line-height: 40px;
  font-size: 30px;
  border: none;
  width: 40px;
  height: 40px;
  text-align: center;
  background: #060;
  color: #fff;
  border-radius: 50% 50%;
  transition: 0.5s;
}

#infos {
  font-weight: bold;
  right: 55px;
}

的test.html:

<button id="infos" class="navbutton">i</button>

但它不起作用。没有创建jQuery对象。

任何帮助?

2 个答案:

答案 0 :(得分:3)

从第二个var前面删除var infobutton

var infobutton = $('#infos');

infobutton.on('click', showinfo);

  function showinfo() {
    if (state !== 'info') {
      setstate('info');
    } else {
      setstate('play');
    }
    //pause timer
    startTimer = false;
  }

您只需要第一次使用var声明变量。第二个var使JS混淆,因为这意味着您将变量重新分配给不同的值,因此您的click事件处理程序没有被绑定 - 您只需要infobutton来引用变量

答案 1 :(得分:1)

这是因为你收到了一个错误。如果您查看浏览器的控制台,您会看到如下内容:

SyntaxError: Unexpected token .

这是因为这一行:

var infobutton.on('click', showinfo);

您使用var关键字创建变量。你不是在这里创建一个。你正在使用现有的;当Javascript到达.字符时,它认为“这不允许作为变量名称”,因此它会停止。其余的代码永远不会被执行。

所有你需要的是:

infobutton.on('click', showinfo);

从中我们学到了一个重要的教训:

请务必检查错误控制台。