jquery opera浏览器的奇怪问题

我设计了如下的测试代码:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
<script type="text/javascript" src="jquery-1.4.1.min.js"></script>
<script type="text/javascript">
$(function(){
//alert($("form select,:input").size());
$(':submit').click(function(){
var obj=$(this).closest("form");
alert($(obj).is("form"));
return false;
});
});
</script>
</head>
<body>
<table width="500" border="1" cellspacing="1" cellpadding="2">
<form id="form1" name="form1" method="post" action="#1">
<tr>
<td><input type="text" name="textfield" id="textfield" /></td>
</tr>
<tr>
<td><textarea name="textarea" id="textarea" cols="45" rows="5"></textarea></td>
</tr>
<tr>
<td><input type="checkbox" name="checkbox" id="checkbox" /></td>
</tr>
<tr>
<td><select name="select" id="select">
</select>
</td>
</tr>
<tr>
<td>
<input type="submit" name="button" id="button" value="提交" /> </td>
</tr></form>
</table>

使用opera浏览器:
当form标签在table内部时,使用JQUERY的closest函数从submit标签开始无法获取到form标签,使用parent标签,从submit标签开始向上套取,获取到的是td,tr,tbody,table跳过了form标签。
使用ie浏览器一切正常,这是为何啊?哪位高手能测试下。
各位高手,可以复制我的代码,分别在两种不同的浏览器下测试下,会出现不同的结果,IE能正常给出true对话框,但是OPERA只能给出FALSE对话框。
一试便知结果~~

这个不是非常可能..这个本身就是jquery的语句...
$.browser是jquery的一个内置的工具吧..因为我平时也很少用这个语句..它是为了检测你的浏览器是哪种浏览器的..jquery将它门分为4种..分别是IE FF和SAFARI...一组..还有OPERA..另外的就是其他浏览器...这个工具其实很少用到.因为jquery它本身就对浏览器有很好的兼容性..基本上你写出来的jquery代码哪到任何一个浏览器上都能用...但是也有极少的情况会出现浏览器的不兼容..比如..给现有的一组select插入元素...因为我们知道..往select里面插入元素很好插入.只需要利用DOM....但是..如果是已经排好序的select..1,2,3,4,5,要插入2.5..每个浏览器对这个处理都不一样...所以browser就可以检测出..是哪种浏览器然后相应的做出判断...但是具体的插入还需要你自己来写.因为jquery没有针对这一个问题专门的设了一种插入的方法...

//CSS

...在jquery里实现页面元素加上CSS有两种方式..一种就是addclass()为元素加上CLASS...然后在style里自己可以指定元素的样式..另一种就是CSS...这个用法是跟你在style里的写法是一样的...我这边说的一样指的是CSS的属性一样..比如:
font-size:12px;你可以这样写..但是也可以写成这样fontSize.这个叫驼峰写法..不仅在jquery里...JS也是一样的...比如.
elem.style.font-size和elem.style.fontSize是一样的意思..
//抱歉..js里好象不可以用-这个方式写..只能出现驼峰式的..

jquery里的.CSS方法有点特别...如果你是指定一个CSS属性的话..可以这样写
$('#elem').css('font-size','12px');左边是样式属性..右边是值.中间,隔开..
但是对于多的CSS呢???你可以一个个的写.css..但是这样很麻烦..体现不出jquery的宗旨"更少代码做更多事"..
jquery里这样写$('#elem').css()
这样就指定了elem ID的元素2个CSS属性.margin和font-size...这个属于对象字面量的写法..如果你学过json的话.或者有过JS的对象写法就应该很清楚这种写法了...

当然..如果你想指定一个CSS属性.同样可以写成那样..以键:值的方式来写..多个键值间用,隔开..

$('#elem').css('margin','12px')=====$('#elem').css()
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-11-01

分析一下dom就行了

IE和FF等其他浏览器不一样的~~~

追问

opera浏览器获取到的是td,tr,tbody,table跳过了form标签。
IE一切正常~~
很是奇怪!

追答

是这样的 因为IE有他自己的渲染模式
所以 写代码 还是按照标准来,W3C验证你这个代码是过不了的~~!原因就是标签嵌套错误

本回答被提问者采纳

jquery 除了 ie 其他浏览器都无效
要看你的代码是否兼容了,不能用IE的脚本去执行FF或者其他的浏览器,要用通用的,比如document.getElementById(),不要用document.all等等,很多地方需要注意。不是一句两句描述清楚的,这是一种习惯。

...是127.0.0.1:8088\/..\/..\/*.htm访问的时候,JQuery不好用呢?_百度知...
3. 你看一下IE下是否报错,不报错的话,那只能证明你的代码压根没有执行。4. 实在不行在火狐、OPERA这些浏览器上测试下看看有问题没。5. 如果都不行,那我也晕了。

怎么用jQuery判断当前浏览器是chrome?
\\x0d\\x0a}else{\\x0d\\x0aalert("这是谷歌或者其他浏览器")\\x0d\\x0a};\\x0d\\x0a});\\x0d\\x0a暂时只能这样了,谷歌没有专门的判断

jquery在实际开发中,一般推荐使用什么版本
jQuery1.x版本的框架时兼容所有IE浏览器的,而2.x版本的jQuery框架并不支持低端IE浏览器。此处的低端IE浏览器指的是IE8版本以及8版本以下。所以,对于需要全兼容的项目,就不得不使用1.x版本啦。当前3.2.1版本支持情况:PC端 Chrome: (Current - 1) and Current Edge: (Current - 1) and Curr...

jquery还有用吗(jquery为什么不用了)
总之jquery是很好用的,比原生的javascript好用多了。jquery好用吗1、jQuery通常被视为Web开发者入门的一个很好的切入点。很多人在学习VanillaJavascript(一个快速、轻量级、跨平台的JavaScript框架)之前都先学习了jQuery。jQuery简洁却不简单jQuery确实去掉了一些老浏览器存在的许多令人懊恼问题。2、jquery版本...

jquery判断当前是什么浏览器
else if (explorer.indexOf("Firefox") >= 0) { alert("Firefox");} \/\/Chrome else if(explorer.indexOf("Chrome") >= 0){ alert("Chrome");} \/\/Opera else if(explorer.indexOf("Opera") >= 0){ alert("Opera");} \/\/Safari else if(explorer.indexOf("Safari") >= 0){ alert...

jQuery easy-ui dialog 在IE7 8 9 10和火狐24.0没问题,在谷歌浏览器...
你引用的jquery 类库是那个版本的,你在试下其他浏览器,360、猎豹、opera,如果这些浏览器也有问题,那就是你类库版本可能高了,或者js插件有冲突,

jQuery 1.9不支持$.browser 怎么判断浏览器类型和版本
判断浏览器类型:内容来自零度科技 .browser.mozilla = \/firefox\/.test(navigator.userAgent.toLowerCase());.browser.webkit = \/webkit\/.test(navigator.userAgent.toLowerCase());.browser.opera = \/opera\/.test(navigator.userAgent.toLowerCase());.browser.msie = \/msie\/.test(navigator.userAgent....

不同浏览器的javascript的差别?
"on"+incident,func); }else{ htmlObj["on"+incident]=func; } } }这个方法就是根据浏览器根据判断浏览器支持的DOM级别来给元素绑定click事件。第二个就是使用一些js库,比如jquery,它已经办我们解决了绝大部分浏览器兼容问题。

jquery mobile 图标消失
如果你是说PC端的话,那你不用担心,因为目前PC端对JQM支持最好的就是chrome浏览器了。而且你用JQM是开发移动端登陆访问的,PC端主要是提供一个测试的环境,方便你开发而已,如果opera不支持,你就用chrome进行开发测试就好了 不明白请追问,如果对你有帮助,记得采纳~

相似回答