Jquery - 访问元素给出null

时间:2010-08-02 07:11:28

标签: jquery

我有一个页面,其中产品及其图像被加载到一个表中。图像最初是隐藏的,并且onmouseover我想显示图像。图像在div标签内,productname显示为链接。在onready函数中,我将事件处理程序附加到链接

$('a').each(function()
    {
        if( $(this).attr('id').match(/prod/)) 
        {
            $(this).mouseover(display());
        }
    });

并在eventhandler(一个名为display的函数)中调用

function display()
{
    $('div').each(function()
    {
        if( $(this).attr('id').match(/sx/)) 
        {
            alert("hi")
        }
    });
}

但是,我收到错误$(“div”)为空

HTML是:

 <table>
 <tr><td><a href="link">product name</a></td>
   <td><div class='.hidden'><table><tr><td><img   src=""></img></td></tr></table></div></td></table>

2 个答案:

答案 0 :(得分:2)

替换

$(this).mouseover(display());

$(this).mouseover(display);

您的代码正在执行函数display()并将其返回值传递给mouseover。但是你需要传递一个函数引用。

答案 1 :(得分:0)

使显示功能匿名,就像你在其余的yoru代码中所做的那样:

$('a').each(function()
    {
        if( $(this).attr('id').match(/prod/)) 
        {
            $(this).mouseover(function() {
                $('div').each(function()
                {
                    if( $(this).attr('id').match(/sx/)) 
                    {
                        alert("hi")
                    }
                });
            });
        }
    });

修改

关于$("div")为空,您能否进一步澄清。你能跟我说一下以下内容:

var obj = $("div");      //is obj null?
alert($("div").length);  //do you get a number? If so, what is it?