2010-12-02 39 views
1

Comment puis-je vérifier si une balise d'ancrage est vide avec PHP ou preg_match ou JQuery? Par exemple, si une balise achor ressemble à: <a href="some_url"></a> Je veux passer par-dessus. J'essaye d'ajouter la fonctionnalité de base de données au menu de Superfish mais dans Google Chrome j'obtiens des étiquettes d'ancre vides dans les sous-menus. Dans tous les autres navigateurs, cela fonctionne très bien.PHP - Comment vérifier si l'étiquette d'ancrage est vide?

Je n'arrive pas à comprendre quel est le problème, alors j'ai pensé que si je ne pouvais pas sortir d'ancrages vides cela pourrait fonctionner.

Pouvez-vous m'aider?

Merci!

<?php 
//--------------------------------------------------------------- 
// INCLUDE DB CONNECTION 
//--------------------------------------------------------------- 
require_once(ROOT_PATH.'connections/mysql.php'); 
require_once(ROOT_PATH.'controls/menu/error_messages.php'); 

//--------------------------------------------------------------- 
// GET MENU FROM DB 
//--------------------------------------------------------------- 
$get_menu = mysqli_query($conn, "SELECT MenuId, Url, Target, Label, Title, Description, ParentId, OrdinalPosition, IsEnabled FROM menu WHERE (IsEnabled = 1) ORDER BY ParentId, OrdinalPosition, Label") 
or die($dataaccess_error); 

if(mysqli_num_rows($get_menu) > 0) 
{ 
    // loop through menu items 
    while ($menu_item = mysqli_fetch_assoc($get_menu)) 
    { 
     $menu_data['MenuItem'][$menu_item['MenuId']] = $menu_item; 
     $menu_data['MenuParent'][$menu_item['ParentId']][] = $menu_item['MenuId']; 
    } 
} 
else 
{ 
    echo $no_menu_items_error; 
} 

//--------------------------------------------------------------- 
// BUILD MENU FUNCTION FOR SUPERFISH 
//--------------------------------------------------------------- 
function HorizMenu($parent_id, $menu_data) 
{ 
    $html = ''; 

    if (isset($menu_data['MenuParent'][$parent_id])) 
    { 
     $html = '<ul class="sf-menu">'; 
     foreach ($menu_data['MenuParent'][$parent_id] as $itemId) 
     { 
      // menu variables 
      $url = $menu_data['MenuItem'][$itemId]['Url']; 
      $target = $menu_data['MenuItem'][$itemId]['Target']; 
      $title = $menu_data['MenuItem'][$itemId]['Title']; 
      $label = $menu_data['MenuItem'][$itemId]['Label']; 

      $html .= '<li class="current"><a href="'.$url.'" target="'.$target.'" title="'.$title.'">'.$label; 

      // find childitems recursively 
      $html .= HorizMenu($itemId, $menu_data); 

      $html .= '</a></li>'; 
     } 
     $html .= '</ul>'; 
    } 

    return $html; 
} 

// output the menu 
echo HorizMenu(0, $menu_data); 
?> 
+3

Il peut être plus judicieux de concentrer votre temps sur le dépannage du problème et non sur le dépannage du pansement. – Yahel

+0

yc, Comment cela est-il pertinent à ma question? J'ai déjà essayé mais je n'ai rien obtenu. J'ai posté la question ici mais je n'ai pas eu de réponse. –

+0

@Scott: alors pourquoi ne pas poster une question concernant le problème de base, avec le code de soutien et une explication? – prodigitalson

Répondre

1

C'est quelque chose qui devrait être pris en charge avec JavaScript (JQuery). Vous pouvez utiliser la méthode "chaque" de JQuery comme suit:

$('a').each(function(index) { 
    if($(this).attr('href') == [something]) { 
     //Do Something 
    } 
}); 
0
$(function(){ 
    $('a[href]').each(function(index) { 
if(this.hash != ""){ 
alert(this.hash); 
} 
}); 
}); 

peut-être quelque chose comme ça

si vous voulez enlever tout ce qui ne marche pas avoir un point d'ancrage

$(function(){ 
    $('a').each(function(index) { 
if(this.hash == ""){ 
$(this).detach(); 
} 
}); 
}); 

check it out ici http://www.jsfiddle.net/dPrsp/

0

Comme je l'ai déjà fait part ci-dessus dans mon commentaire que vous êtes beaucoup mieux poser la question abotu le vrai problème, pas le sparadrap vous éprouvez des difficultés d'application. Cela dit:

$('a[href]').each(function(){ 
    var $this = $(this); 
    if($this.text() == '' && $this.children().length = 0){ 
    $this.remove(); 
    } 
});