如果我有两个div,都具有ID = “myDiv”

$("#myDiv").fadeOut();淡出两者的div了呢?还是会褪色只有第一/第二?或者根本就没有?

我如何改变它淡出哪一个?

注意:我知道重复的ID是对标准,但我使用的fancybox模式弹出并复制了弹出窗口的内容网页上指定的内容。如果有人知道解决这个(也许我使用的fancybox错误)的方式请让我知道。

有帮助吗?

解决方案

jQuery的恰好一个要素查询的ID时相匹配。至多一个Element对象的阵列将由$("#foo").get()返回。见 jQuery文档了解更多信息,或者自己尝试一下。

$(function() {
    alert($("#foo").length);
});

其他提示

元素的ID应该是唯一的。具有相同ID的多个div将是不正确的,不可预测的,蔑视ID的目的。如果你这样做:

$('.myDiv').fadeOut();

这将淡化他们两个了,假设你给他们一个班myDiv和唯一ID(或没有)的。

“注:我知道的副本ID的是对标准”

然后不这样做。你已经想通了两个问题。它违反了标准,并与jQuery的(实际上经常DOM的)选择机制干扰。有可能会在未来更多的问题。

很可能,你的的使用的fancybox错了,在这种情况下,我希望有人熟悉它可以帮助你。更糟的是,如果脚本本身是有缺陷的,你不应该使用它。

由于$(“#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();

我遇到同样的问题。显然,当您从您想要打开的fancybox页面上的内容,它创建的原始内容的镜像股利。在我的情况下,控制被包裹在该的fancybox创建名为一个div“fancy_div”

我能够选择控制,并得到它的值通过使用用于选择以下格式:

$( '#fancy_div [ID =的inputText]')VAL();

您的控件可以在的fancybox内的其它地方存在。做的最好的事情就是看viewsource,但它的棘手。

要得到的视图源,使用以下技术: 请将您的形式对这个标签: 获取价值 打开表单,点击标签,打开警报窗口。点击 确保你的光标在网页内容(找到控制和点击)内。结果 右键点击了控制,并选择“查看源文件”。点击 div的一束存在,所以查找包含内容的DIV。

希望这有助于。

我最近有类似的问题。我有通过Ajax负载显示不同内容的单页。有触发服务器生成PDF图像的按钮。

我的原始的解决方案是使用一个类选择器,它工作得很好,但引起摩擦与另一显影剂。在使用类作为标识符使代码丑陋的链接有这么多的班了。因此,我使用的名称属性:

<a name="printButton"....

$('a[name="printButton"]').on('click',function(){....

工作只是花花公子!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top