0

我有一个 javascript 代码,当单击链接时,它可以显示和隐藏页面的划分。

function shoh(id) { 

    if (document.getElementById) { // DOM3 = IE5, NS6
        if (document.getElementById(id).style.display == "none"){
            $(id).fadeIn();     
        } else {
            $(id).hide();   
        }   
    } else { 
        if (document.layers) {  
            if (document.id.display == "none"){
                document.id.display = 'block';
            } else {
                document.id.display = 'none';
            }
        } else {
            if (document.all.id.style.visibility == "none"){
                document.all.id.style.display = 'block';
            } else {
                document.all.id.style.display = 'none';
            }
        }
    }
}

但是,当我添加 jquery fadeIn 和 hide 而不是使用 document.getElementByid 方法时,它现在不起作用。为什么?

4

4 回答 4

5

为了使用 jQuery 通过 id 选择元素,您必须使用选择器语法,这意味着将 a 附加#到 id。所以,改变

 $(id).fadeIn(); 

 $("#" + id).fadeIn(); 
于 2013-07-22T13:03:54.357 回答
0

尝试这个:

function shoh(id) { 
    var el = $('#' + id);
    if (el.is(':visible')) {
        el.hide();
    } else {
        el.fadeIn();
    }
}
于 2013-07-22T13:05:48.923 回答
0

由于 jquery 为您工作,您不会编写跨浏览器代码。

如此简单

var $el = $('#'+id); // <-- this is the main key :-)

if ($el.css('display') == "none"){
        $el.fadeIn();     
} else {
        $el.hide();   
}  
于 2013-07-22T13:06:14.817 回答
0

您可以将其声明为变量,然后将其包装在 jQuery 选择器中:

var $el = $(document.getElementById(id));
// if
$el.fadein();
//else
$el.hide();

jsFiddle

于 2013-07-22T13:07:23.233 回答