我的意图是在单击div时向标题添加一个类。我已经包含了我正在使用的网站,只是为了让事情变得更容易:
网址 - http://itsmontoya.com/work/iM/
我在标题中添加了一个“扩展”类。这是为了显示按下按钮后导航应该如何显示。我创建了一个简单的Javascript,它应该在我点击按钮时提供警报。我似乎无法让这个工作。我做错了什么想法?
谢谢!
编辑 - 点击按钮div后,我能够正常工作。我非常接近完成这个! :)现在我陷入了未正确传递的变量。
<script type= "text/javascript">
var expanded = false;
function btnClick(){
alert('The variable expanded is '+expanded);
if(expanded === false) {
document.getElementById("header").className = "expanded";
var expanded = true;
} else {
document.getElementById("header").className.replace(/\bexpanded\b/,'');
var expanded = false;
}
};
</script>
我现在正在更新ftp服务器:)
答案 0 :(得分:1)
使用jQuery时,必须以已经加载元素的方式绑定事件。
你有:
<script type= "text/javascript">
$("#expandBtn").click(function(){
alert('hello');
});
</script>
我认为你想要的是:
<script type= "text/javascript">
$(document).ready(function(){
$("#expandBtn").click(function(){
alert('hello');
$('header').addClass('expanded');
});
});
</script>
API documentation将成为你的朋友。第一步 - ready()
。
<强>更新强>
你有这个调用jQuery:
$j('#header').addClass('expanded');
但您的标记适用于HTML5元素<header>
。在这种情况下,您的jQuery需要更改为:
$j('header').addClass('expanded');
$j
是你的jQuery对象。更典型的情况是,您可以使用$
或jQuery
。
时间到了jQuery Selectors!
<强>更新强>
这是您的更新页面:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>itsMontoya</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="shortcut icon" href="/favicon.ico" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js" type="text/javascript"></script>
<script type= "text/javascript">
$(document).ready(function(){
$('.expandBtn').bind('click', function(){
$('header').toggleClass('expanded');
});
});
</script>
</head>
<body>
<div class="wrap">
<header id="header" class="">
<div class="blackBG transparent"></div>
<nav>
<ul>
<li>
Home<img src="images/home.png">
</li>
<li>
Pictures<img src="images/pictures.png">
</li>
<li>
Music<img src="images/mymusic.png">
</li>
<li>
About Me<img src="images/aboutme.png">
</li>
<li>
Resume<img src="images/resume.png">
</li>
</ul>
</nav>
<div id="logo" class="logo"><p>itsMontoya</p></div><div id="expandBtn" class="expandBtn anchor"></div>
</header>
<section class="content">
<article class="blogEntry"></article>
</section>
<footer class="anchor">
<div class="over anchor"><p>2011 itsMontoya.com</p></div>
<div class="blackBG transparent anchor under"></div>
</footer>
</div>
</body>
</html>
答案 1 :(得分:0)
这是将点击处理程序绑定到div
并将该类添加到标题中的方法:
var yourDiv = document.getElementById('your-div-id');
var header = document.getElementById('header');
yourDiv.onclick = function(){
alert("yourDiv was clicked");
header.className = "newCssClass";
};
以上假设标记如下:
<div id="your-div-id">Click</div>
<div id="header"></div>
这是an example。
更新: expanded
变量无法正常工作的原因是因为您在{expanded
中创建了一个名为btnClick()
的重复本地变量{1}}方法。因此,您在函数外部声明的全局expanded
变量永远不会更新。
这是由您使用var
关键字的方式引起的:
var
会创建一个可在当前文档中的任何位置访问的全局变量。var
中使用时,会创建一个只能在该函数中访问的局部变量。这是您的功能已按照您的预期清理完毕:
// Define global variable (using var outside function)
var expanded = true;
function btnClick(){
alert('The variable expanded is '+expanded);
// Condition for true
if(expanded) {
// do something
// Condition for false
} else {
// do something else
}
// Flips boolean value of the global variable (notice lack of var keyword)
expanded = !expanded;
}
以下an example显示了更新expanded
变量的正确方法。
答案 2 :(得分:0)
使用jQuery:
$('#your_div_id').click(function(){
console.log("Clicked.");
$("#header").addClass('expanded');
});
在您的代码中:
var expanded = false;
function btnClick(test){
if($expanded === false) {
.
.
.
到底是什么$expanded
?请注意,在JavaScript中,我们不需要变量的$
符号。