2015-10-06 92 views
0

如何讓特定父母的孩子? JQuery的

var subtypechecked = function() { 
 
    var subtype = $(this); 
 
    var evidence = subtype.parent().parent().parent().children("input[name^='Regression.']").fadeOut(); 
 
    alert(evidence.context.name); 
 

 
}; 
 
$("input[type=checkbox]").on("click", subtypechecked);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
 
<div class="row"> 
 
    <div class="panel panel-default"></div> 
 
    <div class="panel-heading clearfix"></div> 
 
    <div style="padding-left:15px;padding-top:5px"></div> 
 
    <div class="panel-body" style="padding-top:5px;padding-bottom:5px"> 
 
    <label class="checkbox-inline"> 
 
     <input type="checkbox" value="1" name="Repression">Repression 
 
    </label> 
 
    <label class="checkbox-inline"> 
 
     <label class="checkbox-inline"> 
 
     <label class="checkbox-inline"> 
 
    </div> 
 
    <div class="panel-body" style="padding-top:5px;padding-bottom:5px"> 
 
    <label class="checkbox-inline"> 
 
     <input type="checkbox" value="1" name="Repression.Confirmed">Repression.Confirmed 
 
    </label> 
 
    <label class="checkbox-inline"> 
 
     <input type="checkbox" value="2" name="Unknown.Confirmed">Unknown.Confirmed 
 
    </label> 
 
    <label class="checkbox-inline"> 
 
     <label class="checkbox-inline"> 
 
    </div> 
 
</div>

我想用的名字開頭的所有元素 「鎮壓」。但是,我檢查了螢火蟲。 「證據」是我點擊的按鈕。這沒有意義。

+1

請更具體的目標是什麼。你的遍歷沒有意義,警報也沒有意義。你也沒有這個名字的任何元素......選擇器中有一個錯字...'迴歸!=鎮壓' – charlietfl

+0

你爲什麼使用'.context'? http://api.jquery.com/context/ –

+0

當你做'.parent()。parent()。parent()'時,它會被破壞並且很難讀。使用'最近的(選擇器)'來找到祖先。在你的情況'最接近(「。行」)' – epascarello

回答

1

http://api.jquery.com/children/

()方法從.find()在。兒童(不同)僅 行進的單一電平向下DOM樹而.find()可以遍歷 向下多個級別的。兒童以選擇後代元素(孫輩, 等)以及。

你對你的.row DIV執行.children,只。孩子着眼於直接desendants,你是想用.find將看在DOM樹元素更深。

var evidence = subtype.parent() 
       .parent() 
       .parent() 
       .find("input[name^='Repression.']").fadeOut(); 

而且使用的是鎮壓不迴歸的名字

+0

但是,它仍然不是我想要的。我不僅想淡出複選框,而且還想淡化它背後的詞。 –

+0

@RunpengChen,_'我想要得到所有名稱都以「鎮壓」開頭的元素,然後你需要在問題中說出你想要的內容。此外,如果這是你想要的,然後使用適當的選擇器,所以它聽起來像你實際上想淡出標籤和複選框,所以它會是:'label.checkbox-inline',因爲標籤包含文本和複選框元素 –

0

你的問題是與context。引用jQuery文檔時,上下文是:

最初傳遞給jQuery()的DOM節點上下文;如果沒有通過,那麼上下文將可能是文檔。

因此,它會返回傳遞給jQuery的原始DOM,這是點擊複選框,因爲您的選擇器沒有找到任何與您的查詢匹配的元素。

你可以使用parentsfind代替:

var subtypechecked = function() { 
    var subtype = $(this); 
    var evidence = subtype.parents('.row') 
       .find("input[name^='Repression.']"); 

    alert(evidence.attr('name')); 

    // fadeOut the parent label to hide the text, as requested 
    evidence.parent().fadeOut(); 

}; 
$("input[type=checkbox]").on("click", subtypechecked); 
+0

但是,它仍然不是我想要的。我不僅想淡出複選框,而且還想淡化它背後的詞。 –

+0

查看更新後的代碼片段,我在複選框的淡出父級標籤中添加了一行以隱藏文本 – Aggie