2012-12-25 72 views
0

我試圖實現的是在以下示例中查找UL和DIV。以及任何其他可能的後續DIV和UL。QueryPath查找 - 使用多個選擇器查找元素

<ul id="networknavigation" class="navigation" role="navigation"> 
</ul> 
[ .. some code .. ] 
<div id="footer" class="navigation"> 
</div> 
[ .. some code .. ] 

在的QueryPath API服用後一看,我發現,這是可以使用多個選擇,你可以在頁面的「實例選擇」部分看到:
QueryPath CSS Selector Reference

我PHP和使用的QueryPath的功能像這樣的工作:

public function testFindNavigation() 
{ 
$errors = array(); 
foreach($this->qp->find('ul, div') as $el) { 
    if($el->hasClass('navigation, nav, menu') || $el->attr('id') == 'nav' || $el->attr('role') == 'navigation') { 
     array_push($errors, $el->html()); 
    } 
} 
return $errors; 
} 

不幸的是,這個功能只返回了UL,而不是頁腳-DIV和我真的不能,爲什麼它不工作。我也嘗試使用這樣的查找方法:

qp->find('ul', 'div') 

這給了我完全相同的結果。

我在這裏錯過了什麼?

回答

0

我認爲你需要改變

$el->hasClass('navigation, nav, menu') 

$el->hasClass('navigation', 'nav', 'menu') 

,只有上行線路被退回的原因,你的上述說法的版本是問如果元素具有類「導航,導航,菜單」,這不是你所期望的。

+0

我已經嘗試過使用分離字符串的版本,結果相同。 [QueryPath Find reference](http://api.querypath.org/docs/class_query_path.html#a3dee7b848a27c58364868af549e14daa)聲明它只接受一個字符串作爲參數。 如果我正在查找類設置爲「導航,導航,菜單」的元素,那麼也應該不會返回任何東西。 –

+0

你確定嗎?你的「或」聲明讀取的方式,你仍然可以從角色導航中得到任何結果嗎?另外,只讀的參考文獻僅顯示了參數中的單個類 - 如果將類分爲$ el-> hasClass('navigation')|| $ el-> hasClass('nav')|| $ el-> hasClass('menu')? – root