2011-09-08 73 views
1

我對jQuery相當熟悉,但我正在研究YUI中的一個項目,這是我完全陌生的一個項目,我不確定如何完成此任務。在YUI中確定是否存在具有特定值的元素

從本質上講,如果存在一個span元素,其中存在文本「Inactive」,並且從具有「list_subpanel_cases」類的div的樹中向下幾個步驟,我需要顯示一個js彈出窗口。

這是一個粗略的例子,但重點是,這是動態構建的,所以我唯一確定的選擇器是帶有類的div和帶有文本值「無效」的後代。

<div class="list_subpanel_cases"> 
    <table> 
    <tbody> 
     <tr> 
     <td> 
      <span>Active</span> 
     </td> 
     </tr> 
     <tr> 
     <td> 
      <span>Inactive</span> 

而且我需要找出是否有任何跨度與文本「無效」存在。

希望這不是太混亂!

回答

1

似乎CSS3選擇器無法檢查內容(僅限於屬性),因此您必須對候選span標籤使用選擇器,然後使用代碼查看匹配內容。這裏有一種方法:

function findInactive() { 
    var found = null; 
    Y.all(".list_subpanel_cases span").some(function(node, index, nodeList) { 
     if (node.getContent() == "Inactive") { 
      found = node; 
      return(true); // stop looking for more matches 
     } 
     return(false); // keep looking for more matches 
    }); 
    return(found); 
} 

if (findInactive()) { 
    // execute code here when the Inactive span exists 
} 

你可以在這裏看到它的工作:http://jsfiddle.net/jfriend00/BVzqL/

+0

太棒了!謝謝,jfriend00 – marky

+0

作爲YUI的新手,你(或某人)能解釋一下函數參數(node,index,nodeList)是用於/如何在這種情況下使用的嗎? – marky

+0

請參閱文檔中的'.some()':http://yuilibrary.com/yui/docs/api/classes/NodeList.html。它遍歷Y.all()函數返回的nodeList。 'node'是迭代中的當前節點,'index'是當前迭代的'nodeList'中的點,'nodeList'是迭代的整個列表。在這種特殊情況下,我們只需要使用'node'參數,但其他參數則用於其他潛在目的。 – jfriend00

相關問題