对.CLICK()脚本方法的无语

<script type="text/javascript">
                    $(document).ready(function () {
                        var myAccountTab = document.getElementById("menuUl");
                        var myAccountTabLi = myAccountTab.getElementsByTagName("li");
                        var modifyContentdiv = $("#subTabs>div");
                        for (i = 0; i < myAccountTabLi.length; i++) {
                            myAccountTabLi[i].onclick = function () {
                                $(this).addClass("selected").siblings().removeClass("selected");
                                for (j = 0; j < myAccountTabLi.length; j++) {
                                    if (myAccountTabLi[j] == this) {
                                        $(modifyContentdiv[j]).siblings().hide();
                                        $(modifyContentdiv[j]).fadeIn("fast");
                                    }
                                }
                            }
                        }
                    });
                    function ClicksubBrand(p) {
                    var myAccountTab = document.getElementById("menuUl");
                    var myAccountTabLi = myAccountTab.getElementsByTagName("li");
                        if (p ==1) {
                            $(myAccountTabLi[4]).click();
                        }
                    }
                    $(function () {
                        ClicksubBrand(<%=Index%>);
                    });
                </script>

请看用红色标的脚本,刚开始我用myAccountTabLi【4】.click()。当时用firefox测试怎么没有反应后面转成红色部分就可以。

为什么还要用$转成jquery对象在.click(),刚开始觉得很郁闷,上网查了下原来JAVASCRIPT脚本的.CLICK()方法只支持IE4.0以上版本对别的游览器不兼容,无语,JAVASCRIPT脚本兼容性也太差了。只有强制转成jquery对象了。

 

如果不转也是有办法的:请看下面,但是感觉这种很烦

 

对于HTML页面上的超链接(HREF),并不是所有的浏览器都支持其click方法。

在IE浏览器(4.0以上版本)中,我们可以使用click方法来模拟一个超链接的点击操作。比如:

document.links[someLinkIndex].click();

click方法首先触发元素的onclick事件;如果onclick事件返回true则继续打开超链接所指向的URL。

但在其他浏览器(比如NS,firefox等)中,并没有提供这样一个方法。不过你可以通过以下的javascript代码为这些浏览器也增加对click方法的支持:

<SCRIPT LANGUAGE="javascript1.2">
function linkClick () {
  var executeAction = true;
  if (this.onclick) {
    executeAction = this.onclick({type: 'click'});
  }
  if (executeAction)
    open (this.href, this.target ? this.target : '_self');
}
function initLinkClick () {
  if (document.layers && document.links.length > 0)
    document.links[0].constructor.prototype.click = linkClick;
}</SCRIPT>
</HEAD>
<BODY ONLOAD="initLinkClick();">

通过在onload的时候为links元素加载prototype,你就可以在页面实现IE/NS兼容的click方法:

<A HREF=http://www.meidi.net/ ONCLICK="alert(event.type); return true;">
link1</A>
|<A HREF=http://www.meidi.net/ TARGET="_blank">
link2</A>
|<A HREF="http://www.meidi.net" ONCLICK="alert(event.type); return
false;">
link3</A>
|
<BR><FORM><INPUT TYPE="button"  VALUE="link1 click"
   ONCLICK="document.links[0].click();"><INPUT TYPE="button"  VALUE="link2 click"
   ONCLICK="document.links[1].click();"><INPUT TYPE="button"  VALUE="link3 click"
   ONCLICK="document.links[2].click();"></FORM>

 

posted @ 2012-02-24 15:11  scott.pei  阅读(556)  评论(0)    收藏  举报