Rails 应用程序中的 jquery 和 css : shifting a div to the left in response to a mouseover event not working

标签 jquery html ruby-on-rails css

您好,我有一个包含 map 的 div。当用户将鼠标悬停在它上面时,我希望它的宽度从 80% 更改为 50%,在右侧创建空间,以便容纳将出现在右侧的图像。

我在网上查看了一些有关 jquery 事件处理的示例,并尝试将我在那里看到的内容合并到我自己的应用程序中。但是,我认为我没有完全正确,因为没有对鼠标悬停的响应。有人可以帮我诊断错误吗,因为我是 Web 开发、rails 和 jquery 的新手。

以下是我的 rails 元素的相关文件:

list.html.erb - 包含所有的 HTML

<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />  
<script type="text/javascript"  
src="http://maps.googleapis.com/maps/api/js?key=Q&sensor=false"></script>  
<%= stylesheet_link_tag 'application' %>  
<%= javascript_include_tag 'application'%>  
<%= stylesheet_link_tag 'listings' %>  
<body onload="initialize()">  
    <div id="control_panel">  
    <input type="button" onclick="getlistings();" value="Add Markers">  
    <input type="button" onclick="clearMarkers();" value="Remove Markers">  
    </div>  
    <div id="info"></div>  
    <div id="map_canvas" onmouseover="moveLeft();" ></div>  
</body>  

map.js.erb - 包含 javascript 和 jquery 函数

function moveLeft()  
{  
    $(function(){ $("#map_canvas").bind("mouseover", shiftLeft) });  
    $(function(){ $("#map_canvas").bind("mouseleave", shiftLeft) });  
}  

function shiftLeft(evt)  
{  
    $("#map_canvas").toggleClass("shifted_mapCanvas");  

}  

CSS文件:

#map_canvas  
{  
  width: 90%;  
  height: 90%;  
  margin-left: auto;  
  margin-right: auto;  
  html   
  {   
    height: 100%   
   }  
  body   
  {   
    height: 100%;   
    margin: 10;   
    padding: 10   
   }  

}

.shifted_mapCanvas  
{  
  width: 50%;  
  height: 90%;  
  margin-left: auto;  
  margin-right: auto;  
  html    
  {   
    height: 100%   
   }  
  body   
  {   
    height: 100%;   
    margin: 10;   
    padding: 10   
   }  
}  

最佳答案

要尝试仅回答您提出的问题,您正在调用 jQuery 函数 ($("#map_canvas").bind("mouseover", shiftLeft)),但是在哪里你加载 jQuery 吗?

此外,您正在尝试内联触发 javascript 调用,这绝对不是推荐的方法。相反,假设已加载 jQuery,如果您使用:

<script>
$('div#map_canvas').hover({
  function() { $(this).toggleClass('shifted_mapCanvas'); },
});
</script>

...它应该工作。请参阅 hover() 的文档和 toggleClass()


为了解决一些其他问题:

banditKing,恭敬,您需要回到原点,重新开始。您在过去几天发布了几个问题,表明您不了解 (1) HTML、(2) CSS 和 (3) Rails 的基本水平。

我可以这样判断:

1) 你应该几乎肯定没有名为 list.html.erb 的 Rails View ,它可能应该是 views/lists/show.html.erbviews/lists/index.html.erb。参见 Creating A Resource在 Rails 指南中。

2) Rails View 不应该包含 body 标签,并且可能不应该包含 meta 或 script 标签。 body 标签属于您的布局,否则您将不得不在每个 View 中重复该标签以确保每个 View 都有一个 body,否则您的页面上将有无效标记。

3) 您的样式表是 SCSS,而不是 CSS,这很好,除非您尝试做一些在 DOM 中完全没有意义的事情。您正在为 HTML 和 BODY 标签嵌套样式,它们必须在您嵌套它们的 div 之外......换句话说,您正在创建的 SCSS 正在推出不可能的 CSS完全无效的 HTML 元素的定义。

对于 2 和 3,请参阅 How to Make a Simple Valid HTML Document .

我可以继续 unobtrusive javascript同样,但现在我想您已经明白了。

您需要先学习什么是 HTML 及其工作原理。我建议从 W3C Schools 开始 HTML , CSS , 和 JavaScript .

然后,浏览 Michael Hartl 的 Rails 3 Tutorial .您可以在线免费完成或购买一本书。

前三个教程每个只需要几个小时,而 Rails 教程大概可以在一两天内完成。如果您按顺序完成其中的每一项,您将为自己节省 数周 甚至 数月 的时间来解决您现在提出的问题。

强烈鼓励您先完成这些基础知识,然后再回到您现在正在从事的元素。

关于Rails 应用程序中的 jquery 和 css : shifting a div to the left in response to a mouseover event not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10269328/

相关文章:

javascript - 'Dive into python' 的 jquery 等价物是什么?

css - 形式清洁,使用 div 或元素显示 :block?

javascript - getJSON + reddit api——如何咬它?

javascript - 如何通过在jquery中传递选项文本来获取下拉列表的特定选项值

html - Bootstrap 4.0 移动布局的排序/移动列

html - 更改移动 megamenu 下拉菜单的背景颜色

html - 如何使菜单可以越过 Logo ?

ruby-on-rails - 如何在 Ruby 中将年份数组转换为月份数组?

ruby-on-rails - 来自数组的 RoR 字符串

jquery - 滑动动画只有一个div