我有这样的表格:
<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也能找到它吗?
你知道为什么吗?
答案 0 :(得分:2)
我不确定你为什么会得到null错误,但如果你的意图是将这种风格应用于这四个特定元素,那么语法应该是:
$("#frmMainMenu, #menuPopupAP, #menuItem0, #out").css('padding','0 0 0 29px');
如果(我无法判断,因为我们提供的标记样本不足)这四个元素是层次结构中的连续节点(即#out
是#menuItem
的孩子是孩子#menuPopupAp
的孩子是#frmMainMnenu
的孩子,然后删除他们之间的逗号。
编辑冒号?这将导致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可以包含它们。