html/jquery常见问题与注意点

获取某元素的父元素

通常用在根据被click的td获取tbody时。

parent是指取得一个包含着所有匹配元素的唯一父元素的元素集合。
parents则是取得一个包含着所有匹配元素的祖先元素的元素集合(不包含根元素)。可以通过一个可选的表达式进行筛选。
可以看出parent取的很明确,就是当前元素的父元素;parents则是当前元素的祖先元素。下面列出例子说明:
<div id=‘div1‘>
  <div id=‘div2‘><p></p></div>
  <div id=‘div3‘ class=‘a‘><p></p></div>
  <div id=‘div4‘><p></p></div>
</div>

$(‘p‘).parent()取到的是div2,div3,div4
$(‘p‘).parent(‘.a‘)取到的是div3
$(‘p‘).parent().parent()取到的是div1,这点比较奇特;不过Jquery对象本身的特点决定了这是可行的。
$(‘p‘).parents()取到的是div1,div2,div3,div4
$(‘p‘).parents(‘.a‘)取到的是div3

获取某元素的子孙元素

通常用于获取tr或者tbody下的某个元素比如checkbox。

children(selector) 方法是返回匹配元素集合中每个元素的所有子元素仅儿子辈)。参数可选,添加参数表示通过选择器进行过滤,对元素进行筛选。

.find(selector)方法是返回匹配元素集合中每个元素的后代。参数是必选的,可以为选择器、jquery对象可元素来对元素进行筛选。

jquery attr和prop的差异

常用于设置readonly,checked,selected等这些属性时会遇到。

比如,对于jquery操作复选框的情况

$("#CheckedAll").click(function () {
                if ($(this).is(":checked")) {
                    $("[name=items]:checkbox").attr("checked", true);
                } else {
                    $("[name=items]:checkbox").attr("checked", false);
                }
            });我测试下来是每次都不生效,但是确实执行了。下面换成prop:
$("#CheckedAll").click(function () {
                if ($(this).is(":checked")) {
                    $("[name=items]:checkbox").prop("checked", true);
                } else {
                    $("[name=items]:checkbox").prop("checked", false);
                }
            });就没有问题了。具体两者的差别可详细参考http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/,这里其实说的非常详细了,其实跟jquery没什么关系,主要是dom和js自身理解到位的问题。

display样式对于布局来说,这应该算是最重要的属性之一了。
  • display:block
    1. block元素会独占一行,多个block元素会各自新起一行。默认情况下,block元素宽度自动填满其父元素宽度。
    2. block元素可以设置width,height属性。块级元素即使设置了宽度,仍然是独占一行。
    3. block元素可以设置margin和padding属性。
  • display:inline
    1. inline元素不会独占一行,多个相邻的行内元素会排列在同一行里,直到一行排列不下,才会新换一行,其宽度随元素的内容而变化。
    2. inline元素设置width,height属性无效。
    3. inline元素的margin和padding属性,水平方向的padding-left, padding-right, margin-left, margin-right都产生边距效果;但竖直方向的padding-top, padding-bottom, margin-top, margin-bottom不会产生边距效果。
  • display:inline-block
    1. 简单来说就是将对象呈现为inline对象,但是对象的内容作为block对象呈现。之后的内联对象会被排列在同一行内。比如我们可以给一个link(a元素)inline-block属性值,使其既具有block的宽度高度特性又具有inline的同行特性。
  • 一般我们会用display:block,display:inline或者display:inline-block来调整元素的布局级别,其实display的参数远远不止这三种,仅仅是比较常用而已。

元素本身居中

有些时候,我们希望元素本身居中显示,比如显示标题或者分页栏,这个特性貌似css本身没有支持,要利用html自身的align属性(这设计还是比较奇葩),如下所示:

<div align="center"><button>hit me</button></div>

position样式

大部分的定位和布局都可以使用margin/padding完成了,但有些时候使用margin/padding总是不够自然或者不合适。所以position样式虽然使用的绝对频率不怎么高,但很多时候仍然是必须的。

position的四个属性值:

1.relative
2.absolute
3.fixed
4.static
下面分别讲述这四个属性。

<div id="parent">
     <div id="sub1">sub1</id>
     <div id="sub2">sub2</id>
</div>

1. relative

relative属性相对比较简单,我们要搞清它是相对哪个对象来进行偏移的。答案是它本身的位置。在上面的代码中,sub1和sub2是同级关系,如果设定sub1一个relative属性,比如设置如下CSS代码:

#sub1
{
    position: relative;
    padding: 5px;
    top: 5px;
    left: 5px;
}

我们可以这样理解,如果不设置relative属性,sub1的位置按照正常的文档流,它应该处于某个位置。但当设置sub1为的position为relative后,将根据top,right,bottom,left的值按照它理应所在的位置进行偏移,relative的“相对的”意思也正体现于此。

对于此,您只需要记住,sub1如果不设置relative时它应该在哪里,一旦设置后就按照它理应在的位置进行偏移。

随后的问题是,sub2的位置又在哪里呢?答案是它原来在哪里,现在就在哪里,它的位置不会因为sub1增加了position的属性而发生改变。

如果此时把sub2的position也设置为relative,会发生什么现象?此时依然和sub1一样,按照它原来应有的位置进行偏移。

注意relative的偏移是基于对象的margin的左上侧的。

2. absolute

这个属性总是有人给出误导。说当position属性设为absolute后,总是按照浏览器窗口来进行定位的,这其实是错误的。实际上,这是fixed属性的特点。

当sub1的position设置为absolute后,其到底以谁为对象进行偏移呢?这里分为两种情况:

(1)当sub1的父对象(或曾祖父,只要是父级对象)parent也设置了position属性,且position的属性值为absolute或者relative时,也就是说,不是默认值的情况,此时sub1按照这个parent来进行定位。

注意,对象虽然确定好了,但有些细节需要您的注意,那就是我们到底以parent的哪个定位点来进行定位呢?如果parent设定了margin,border,padding等属性,那么这个定位点将忽略padding,将会从padding开始的地方(即只从padding的左上角开始)进行定位,也就是忽略padding,当然并不会忽略margin和border。

接下来的问题是,sub2的位置到哪里去了呢?由于当position设置为absolute后,会导致sub1溢出正常的文档流,就像它不属于 parent一样,它漂浮了起来,在DreamWeaver中把它称为“层”,其实意思是一样的。此时sub2将获得sub1的位置,它的文档流不再基于 sub1,而是直接从parent开始。

(2)如果sub1不存在一个有着position属性的父对象,那么那就会以body为定位对象,按照浏览器的窗口进行定位,这个比较容易理解。

3. fixed

fixed是特殊的absolute,即fixed总是以body为定位对象的,按照浏览器的窗口进行定位,即使拖动滚动条,他的位置也是不会改变的。与background-attachment:fixed相似
当然在Dreamweaver下似乎没有支持

4. static

position的默认值,一般不设置position属性时,会按照正常的文档流进行排列。

div+iframe布局

现在很多的布局都是用div+iframe的风格,如下:

content部分一般需要自适应,所以就需要每次onload的时候重新计算大小,如下:

<iframe src="#" id="content" scrolling="no" frameborder="0"></iframe>

function changeFrameHeight(){
    var ifm= document.getElementById("content"); 
    ifm.height=document.documentElement.clientHeight;

}

window.onresize=function(){  
     changeFrameHeight();

}

时间: 2024-11-05 17:30:48

html/jquery常见问题与注意点的相关文章

jquery easyui常见问题:

1.jquery easyui1.4.2 demo在ie10 上加载json的时候没有效果 从官网上下载了jquery easyui1.4.2 里面有个demo文件夹,但是发现底下的demo在IE.360等IE核浏览器上加载json的时候没有效果,而在火狐下很正常.另附: 以demo地下的datagrid的columngroup.html 设置了url 但是不生效.在ie8以下会出现一些脚本错误,ie9以上是没提示错误,但就是数据显示不出来.请各位大侠指点指点把demo整个例子放到iis 上后,

使用Jquery EasyUi常见问题解决方案

/***清空指定表单中的内容,参数为目标form的id*注:在使用Jquery EasyUI的弹出窗口录入新增内容时,每次打开必须清空上次输入的历史*数据,此时通常采用的方法是对每个输入组件进行置空操作:$("#name").val(""),这样做,*当输入组件比较多时会很繁琐,产生的js代码很长,这时可以将所有的输入组件放入个form表单*中,然后调用以下方法即可.**@param formId将要清空内容的form表单的id*/function resetCon

jquery 的几种写法和常见问题

为了理解页面初始化事件的编写和执行方式,特此记录下页面加载事件的语句方式: //最简单的加载事件语句 $(function(){ alert("这个提示框最先弹出")//这个用的最常见,它加载页面的时候只要调用就可以加载,不必等到页面上所有的 东西全部加载完毕才执行js函数 }); //也可以这样写 jQuery(function(){ alert("这个提示框最先弹出") }); //完整的页面加载事件语法 $(document).ready(function()

js/jQuery使用过程中常见问题

目录 一.jQuery选择器选择选中的或者disabled的选择框时attr函数无效 一.jQuery选择器选择选中的或者disabled的选择框时attr函数无效 jQuery代码如下: if (!$obj.prop("disabled")){//用prop选择或者设置对象值 $obj.prop("checked", This.prop("checked")); } 或者 $obj.is(":checked");

jquery中常见问题及解决办法小结

1 在开发开放聊天室的过程中,遇到使用ajax提交表单插入数据库时会插入两条数据的情况 解决办法,在ajax函数返回后,return false. $("#btn").click(function(){ $.ajax({ do something }); return false; })

Jquery的Ajax中get和post方法的不常见问题

今天遇到一个很奇怪的现象,后来发现原来是Ajax的get方式,加载一次之后,就不在访问数据库,而post方式每次都会访问一次数据库 案例需求,在点击"项目信息列表"的记录行时,联动加载"项目接口信息列表" $(#projectGrid#).datagrid({    onClickRow:function(rowIndex,rowData){           var url = ROOT_PATH + "/projectInterface/queryP

【转】 jquery easyui Tab 引入页面的问题

原地址:http://blog.csdn.net/superdog007/article/details/8225518 jQuery Easyui 的tabs插件有两种方式加载某个tab(标签页)上的内容:“href远程请求”和“content本地内容”,本文就两种方式的优缺点进行简单分析和思考. 两者特点: href方式加载数据的特点: 被加载的页面只有body元素内部的内容才会被加载,也就是jQuery的ajax请求的只是html片段. 加载远程url时有遮罩效果,也就是“等待中……”效果

JEECG常见问题大全征集

大家还有什么问题,请跟帖,谢谢支持..  JEECG常见问题大全征集 1. jeecg没有数据库脚本问题   jeecg不须要数据库脚本,在数据库创建好数据库,项目配置好数据源链接.会自己主动建表,登录时候有初始化数据链接   该机制配置文件:src/main/resources/dbconfig.properties                    属性:                            #更新|创建|验证数据库表结构|不作改变     默认update(creat

移动端web开发常见问题

上一篇总结了一些有关html5和css3的面试题,这一篇是有关于移动端web开发的常见问题,希望一样对你有一些帮助. Meta相关 1. 添加到主屏后的标题(IOS) <meta name="apple-mobile-web-app-title" content="标题"> 2. 启用 WebApp 全屏模式(IOS) 当网站添加到主屏幕后再点击进行启动时,可隐藏地址栏(从浏览器跳转或输入链接进入并没有此效果) <meta name="a