为什么jQuery函数返回null?

时间:2011-03-23 16:33:37

标签: javascript jquery

我有这样的表格:

<form action="javascript:;" class="iceFrm" enctype="application/x-www-form-urlencoded" id="frmMainMenu" method="post" onsubmit="return false;">
.....
</form>

我不明白为什么这个剧本:

<script type="text/javascript">
$(document).ready(function () {
    $("#frmMainMenu").$("#menuPopupAP").$("#menuItem0").$("#out").css('padding','0 0 0 29px');
});
</script>

表示:

  

$("#frmMainMenu")为空

在Firebug中。

更新 这是html元素(来自上面的表格)我想更改填充:

<span id="frmMainMenu:menuPopupAP:menuItem0:out" class="iceOutTxt iceMnuItmLabel graMenuPopupMenuItemLabel">My Applications</span>

更新2:

我忘了提到这个跨度在一个菜单中,所以基本上它是正常隐藏的并且仅在悬停在某个div上时显示...即使它没有显示,jQuery也能找到它吗?

你知道为什么吗?

6 个答案:

答案 0 :(得分:2)

我不确定你为什么会得到null错误,但如果你的意图是将这种风格应用于这四个特定元素,那么语法应该是:

$("#frmMainMenu, #menuPopupAP, #menuItem0, #out").css('padding','0 0 0 29px');

如果(我无法判断,因为我们提供的标记样本不足)这四个元素是层次结构中的连续节点(即#out#menuItem的孩子是孩子#menuPopupAp的孩子是#frmMainMnenu的孩子,然后删除他们之间的逗号。

ID中的

编辑冒号?这将导致jQuery选择器出现问题。尝试使用下划线?

答案 1 :(得分:1)

更新问题后

更新

$('#frmMainMenu\3AmenuPopupAP\3AmenuItem0\3Aout').css('padding','0 0 0 29px');

您无法在选择器中使用:,但可以使用十六进制等效值 - \3A

this SO thread上几乎没有其他解决方法。


您是否正在尝试搜索frmMainMenu的孩子?试试这个:

$(document).ready(function () {
            $("#frmMainMenu").find("#menuPopupAP")
                             .find("#menuItem0")
                             .find("#out")
                             .css('padding','0 0 0 29px');
});

答案 2 :(得分:0)

不是那个 - 它是其中一个无效的孩子。您需要将脚本更改为此类

<script type="text/javascript">
 $(document).ready(function () {
            $("#frmMainMenu #menuPopupAP #menuItem0 #out").css('padding','0 0 0 29px');
        });
        </script>

答案 3 :(得分:0)

你肯定不是每次都要使用#(否则你可以只使用#out,但听起来应该像#

$(&#34; #frmMainMenu .menuPopupAP .menuItem0 .out&#34;)。css(...

答案 4 :(得分:0)

你能发布你需要完成的任务吗? 从您的选择器中,我认为您采用硬选择器方法与DOM进行交互。

答案 5 :(得分:0)

<击>

<击>
$('#frmMainMenu:menuPopupAP:menuItem0:out').css('padding','0 0 0 29px');

<击>

$('span[id="frmMainMenu:menuPopupAP:menuItem0:out"]').css('padding','0 0 0 29px');

您需要使用[id="value"]语法,因为在jQuery选择器中:可以用作选择器,因此它不会意识到ID可以包含它们。