如果我有两个div,id =“myDiv”重复id的拧jQuery选择器?
$("#myDiv").fadeOut();
会淡出两个div吗?或者它会褪色只有第一/秒?或根本没有?
如何更改它淡出哪一个?
注:我知道重复的ID是违反标准,但我使用fancybox模式弹出窗口,它复制了页面上指定内容的弹出窗口的内容。如果有人知道解决方法(也许我使用fancybox错误),请让我知道。
如果我有两个div,id =“myDiv”重复id的拧jQuery选择器?
$("#myDiv").fadeOut();
会淡出两个div吗?或者它会褪色只有第一/秒?或根本没有?
如何更改它淡出哪一个?
注:我知道重复的ID是违反标准,但我使用fancybox模式弹出窗口,它复制了页面上指定内容的弹出窗口的内容。如果有人知道解决方法(也许我使用fancybox错误),请让我知道。
jQuery在查询ID时恰好匹配一个元素。一个最多有一个Element
对象的数组将返回$("#foo").get()
。有关更多信息,请参阅jQuery documentation,或自行尝试。
$(function() {
alert($("#foo").length);
});
元素ID应该是唯一的。具有相同ID的多个DIV将是不正确且不可预知的,并且违背该ID的目的。如果你这样做:
$('.myDiv').fadeOut();
这将淡化他们两个了,假设你给他们一个班myDiv和唯一ID(或没有)的。 “
”注意:我知道重复的ID是违反标准的“
然后不要这样做。你已经弄清楚了两个问题。它违反了标准,并且干扰了jQuery(实际上是常规的DOM)选择机制。未来可能会有更多问题。
很可能,你是使用fancybox错误,在这种情况下,我希望有人熟悉它可以帮助你。或者更糟的是,如果脚本本身有缺陷,则不应该使用它。
我遇到了同样的问题。很显然,当您在打开Fancybox的页面上创建内容时,它会创建原始内容的镜像div。在我的情况下,控制被包裹在那的fancybox创建了一个名为“fancy_div”
我能够选择的控制,并获得它的使用以下格式选择值DIV:
$(” #fancy_div [id = InputText]')。val();
您的控件可能存在于Fancybox的其他地方。最好的办法是看看viewsource,但这很棘手。
要进入查看源代码,使用以下技术: 将这个标签您的形式: 获得价值 打开表单,点击标签,打开警报窗口。
确保您的光标在页面内容中(找到控件并单击)。
右键单击控件并选择“查看源代码”。
存在一堆div,因此请查找包含您的内容的div。
希望这会有所帮助。
因为$(“#myDiv”)将只与ID返回第一个div,你必须找到使用这种伎俩,ID的所有元素:
$('[id=myDiv]');
因此,对于你的情况,在淡出适用于所有这些div的:
$('[id=myDiv]').fadeOut();
如果你想确保你的页面没有这个ID两次,然后你可以这样做,删除多余的:
$('[id=myDiv]:gt(0)').remove();
你也可以使用find()的路线。发现将返回所有的元素与ID,并且可以将范围限制在一个特定的父母,如果需要尝试像$(document).find('#myDiv').fadeOut();
或
$('.parentElement').find('#myDiv').fadeOut();
我最近有一个类似的问题。我有一个页面通过Ajax加载显示不同的内容。有一个按钮会触发服务器生成PDF图像。
我原来的解决方案是使用类选择器,它运行良好,但与其他开发人员发生摩擦。链接中已经有很多类,使用类作为标识符使代码变得丑陋。所以我用了一个名字属性:
<a name="printButton"....
$('a[name="printButton"]').on('click',function(){....
工作只是丹迪!
你试过了吗? – 2009-06-27 23:58:21
是的,但我希望如果我问别人他们可能会给我一个解释,为什么只有第一个被淡出。 – Matt 2009-06-28 00:33:41
它重复吗?或将内容“移动”到弹出窗口位置? – scunliffe 2009-06-28 02:43:07