【问题标题】:simple use of jquery .css, .height, .width breaking in asp.netjquery .css, .height, .width 在asp.net中的简单使用
【发布时间】:2010-12-01 19:23:01
【问题描述】:

我正在尝试使用 jquery 在 asp.net 页面中调整包含 100% 高度/宽度图像的 div 的大小。我有一些代码可以作为一个简单的 html 页面正常工作。这里是:

<html>
<head>
<title>Image Resize Example</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#SizeSelect").change(function() {
        var newDim = $(this).val();
        $("div.pillContainer").height(newDim);
        $("div.pillContainer").width(newDim);
    });
});
</script>
<style type="text/css">    
    div.pillContainer {
    width: 70px;
        height: 70px;
        display: block;
        margin: 20px;
    }
    div.pillContainer img {
        width: 100%;
        height: 100%;
    }
</style>
</head>
<body>

<div class="pillContainer"><img src="http://www.marvinandshea.com/Images/thumbs/friends_thumbs/friends%20(24).JPG" /></div>

<b>Size:</b> <select id="SizeSelect" name="SizeSelect" >
<option value="50 px">Small</option>
<option value="70 px">Medium</option>
<option value="90 px">Large</option>
</select>
</body>
</html>

由于某种原因,只要我将这个确切的代码放在表单标签 runat=server 之间的 .aspx 页面中,重新调整大小就会停止工作。具体来说,这是我损坏的 aspx 页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyMediHealth.Interface.WebForm1" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Image Resize Example</title>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $("#SizeSelect").change(function() {
        var newDim = $(this).val();
        $("div.pillContainer").height(newDim);
        $("div.pillContainer").width(newDim);
    });
});
</script>
<style type="text/css">
    div.pillContainer {
    width: 70px;
        height: 70px;
        display: block;
        margin: 20px;
    }
    div.pillContainer img {
        width: 100%;
        height: 100%;
    }
</style>
</head>

<body>
<form id="form1" runat="server">

<div class="pillContainer"><img src="http://www.marvinandshea.com/Images/thumbs/friends_thumbs/friends%20(24).JPG" /></div>

<b>Size:</b> <select id="SizeSelect" name="SizeSelect" >
    <option value="50 px">Small</option>
    <option value="70 px">Medium</option>
    <option value="90 px">Large</option>
</select>

</form>
</body>

有人知道它为什么不起作用以及如何解决它吗?

【问题讨论】:

  • 如果您在静态 HTML 页面中放入相同的 &lt;!DOCTYPE&gt;,它仍然有效吗?
  • 如果 jquery 已加载或未加载,请在 firebug 中检查?中断意味着页面已损坏或 jquery 无法正常工作
  • 另一个区别是 ..在 asp.net 页面中你有一个 doctype 但在普通 html 中你没有 doctype
  • 有趣的是,删除 doctype 确实为我解决了问题。谢谢!

标签: asp.net jquery


【解决方案1】:

一个更好的问题是:为什么它在任何一个版本中都有效。 :)

您正在向 jQuery 的高度函数发送“50 px”(或其他)。尝试通过将选项更改为仅发送一个号码:

<option value="50">Small</option>
<option value="70">Medium</option>
<option value="90">Large</option>

在 ASP.net 中更改它为我修复了它。 (就像你说的那样,它以前不起作用)

我尚未测试您的纯 HTML 版本以了解其工作原理。

编辑: 作为记录,我也无法让您的其他版本在 JSFiddle 中工作。我认为您在将其移植到 ASP.net 之前更改了它并且没有意识到您破坏了它?

【讨论】:

  • 感谢您帮我看这个。当我在api.jquery.com/height 阅读高度的 jquery 文档时,它说“调用 .height(value) 时,该值可以是字符串(数字和单位)或数字。如果只为该值提供了一个数字, jQuery 采用像素单位。”所以,我不认为单位的存在或缺乏是问题所在。但 Frédéric Hamidi 的删除文档类型解决方案有效。
  • 尝试多个浏览器。删除它对我没有效果。
【解决方案2】:

虽然您的 .aspx 代码块中缺少结束标记,但对我来说效果很好。

【讨论】:

  • 你在什么浏览器上试用过?我还没有看到他的示例在任何浏览器中都未经修改。
  • IE 9 不接受空格,除非你使用兼容模式。
【解决方案3】:

值和单位之间没有空格。去掉空格,就可以了:

<select id="SizeSelect" name="SizeSelect" >
  <option value="50px">Small</option>
  <option value="70px">Medium</option>
  <option value="90px">Large</option>
</select>

如 clifgriffin 建议的那样,如果您同时移除空间和单元,它也将起作用。如果值只有数字,widthheight 方法将添加 px

当您在没有 doctype 的页面中使用它时,它会以 quirks 模式呈现,并且规则更加宽松。值和单位之间的空格仍然是不允许的,但有些浏览器会使用该值并假定单位为px,而忽略空格后面的内容。

【讨论】:

  • 感谢您查看此内容。对我来说,只要我还有 doctype 声明,就没有任何作用。但是,如果我删除 doctype,任何这些变体(有或没有空格,有或没有单位)似乎都可以正常工作。
  • @Marvin:我复制了您上面的代码,除了 page 指令,删除了值中的空格并在不同的浏览器中进行了尝试。它适用于 Firefox 3.6.12、IE 9(正常和兼容模式)、Opera 10.63 和 Safari 4.0.5。
猜你喜欢
  • 2012-10-28
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 1970-01-01
  • 2011-04-03
相关资源
最近更新 更多