如果我有兩個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