2014-12-04 44 views
0

現在我有一些看起來像這樣的HTML一旦呈現。如何通過嵌套在另一個div中的ID來選擇div?

<div id="MyPartial"> 
    <div id="div+1"></div> 
    <div id="div+2"></div> 
    <div id="div+3"></div> 
</div> 

MyPartial div中的所有div的內部都是動態的。所以可能有3個,或者可能沒有。我正嘗試通過此ID一次刪除它們中的一個。

$("#div+" + Id).remove() 

這個沒有工作,所以我想這

$("#MyPartial").children().select("#div+" + Id).remove(); 

這消除了整個 'MyPartial' DIV。

我錯過了什麼?過去的第一個聲明對我來說一直很好,但是現在看起來嵌套正在搞砸了。

編輯:加號搞亂了我。我將其更改爲下劃線,並且工作正常。感謝大家。

+6

嘗試'$( 「#DIV + \\」 +編號)'。您選擇使用ID,所以您需要數字符號標識符('#')。 – George 2014-12-04 15:51:44

+2

鑑於頁面上的所有ID應該是唯一的,爲什麼不能只用$('#div +'+ id)? – Liath 2014-12-04 15:52:17

+0

我會在你的ID中避免'+'字符。字符'_'會更好。 – Flea777 2014-12-04 15:54:56

回答

4

別在你的ID中使用加號(+)!這是一個選擇(見http://api.jquery.com/next-adjacent-Selector/

如果你真的想在你的是使用加,你應該逃避它(見http://api.jquery.com/category/selectors/

例如:

$('#div\\+1').remove(); 
+0

我很想知道這太長時間了......我認爲這可能是某種逃避角色。我將它改爲下劃線,現在它工作正常。謝謝您的幫助。 jQuery對我來說依然很奇怪,但它的語法仍然很難。 – user1977591 2014-12-04 16:13:02

0

試試這個

$("#MyPartial #div+" + Id).remove(); 
0

IDS應該始終處於DISTINCT ...

嘗試使他們的類,那麼你可以使用$("#MyPartial .div+" + Id)

如果div+1是ID的兩倍,只有第一個可以訪問。

如果ID真正獨特的(不同),那麼就使用$("#div+1")

+2

OPs用戶*是*唯一的,他們只是不正確地使用選擇器。 – George 2014-12-04 15:54:09

0

ID應該總是在頁面獨一無二的,你不必擔心它的父

$("#div+" + Id).remove() 
2

+不允許在class-和id-屬性中。在CSS +有一個選擇器含義。這意味着:選擇下一個鄰居元素。

也許這就是爲什麼jQuery不能選擇你的元素。嘗試給你的ID其他名稱,如div_1,'div_2`,...

然後你可以通過它的id來選擇一個元素,比如$('#div_1')

由於ID應該在整個文檔中是唯一的這個選擇應該是一樣$('#myPartial #div_1')

+0

好趕上!錯過了...... – rfornal 2014-12-04 15:57:40

+2

第一句話根本不是真的。 – 2014-12-04 15:58:32

+0

@MrLister對不起,它被稱爲「毗鄰」 - 選擇器英語 - 不是鄰居選擇器:看到這個職位:http://stackoverflow.com/questions/1139763/what-does-the-plus-sign-css-selector-mean或者你對我的判決意味着什麼? – 2014-12-04 16:05:33

0

其實issueis的jQuery將難逃加號.. 如果你這樣做

$(的document.getElementById(同上))。刪除()

+0

什麼應該'ID'是?這對我來說沒有意義 – empiric 2014-12-04 16:06:02

+0

好吧,這是一個變量..就像他在代碼中使用的一樣..這很有道理,我認爲 – 2014-12-04 16:18:11

1

使用$("#div+" + Id).remove()

這就是說,ids始終是唯一的。或者他們應該。所以,沒有必要在父母中找到。見

7.5.2元素標識符:id和類屬性 屬性定義 ID =名[CS] 該屬性分配一個名稱的元素。該名稱在文檔中必須是唯一的。

the refference

編輯:根據意見,這是正確的說,這並不工作,這項工作

$( '#DIV \\ + 1')刪除(。 );

同樣,這就是說,見this question,雖然加號不禁止我的理解,但jquery有問題。如果可能的話,我會刪除加號,如果不是,則使用轉義版本。

+0

這不起作用,因爲'+是選擇器 – empiric 2014-12-04 16:02:29

+0

你是對的,我很驚訝它並沒有。逃逸版本似乎工作,但無論如何,我會認爲沒有加號寫代碼更容易。 – Ernesto 2014-12-04 16:11:26

+0

是的,最好依靠有效的html和類名 – empiric 2014-12-04 16:12:42

0

你的代碼有兩個問題。 1.您忘記將ID選擇器「#」放在您的div選擇器前面。 2. id不能包含「+」。我用「 - 」替換它,它工作得很好。

var Id = "1"; 
 
$("#div-" + Id).remove()
div { 
 
    
 
    background: blue; 
 
    
 
    } 
 

 
div > div { 
 
    
 
    background: red; 
 
    width: 100px; 
 
    height: 100px; 
 
    display: inline-block; 
 
    
 
    }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> 
 
<div id="MyPartial"> 
 
    <div id="div-1">1</div> 
 
    <div id="div-2">2</div> 
 
    <div id="div-3">3</div> 
 
</div>

相關問題