PHP - Как проверить, пуст ли тег привязки? - PullRequest
1 голос
/ 02 декабря 2010

Как я могу проверить, является ли тег привязки пустым с PHP или preg_match или JQuery?Например, если тег achor выглядит следующим образом: <a href="some_url"></a> Я хочу пропустить его.

Я пытаюсь добавить функциональность базы данных в меню Superfish, но в Google Chrome я получаю пустые теги привязки в подменю.Во всех других браузерах он работает нормально.

Я не могу понять, в чем проблема, поэтому я подумал, что если я не смогу вывести пустые якоря, это может сработать.

Можете ли вы помочь?

Спасибо!

<?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); 
?>

Ответы [ 4 ]

1 голос
/ 02 декабря 2010

Об этом следует позаботиться с помощью JavaScript (JQuery).Вы можете использовать «каждый» метод JQuery следующим образом:

$('a').each(function(index) {
   if( $(this).attr('href') == [something] ) {
      //Do Something
   }
});
0 голосов
/ 03 декабря 2010

Как я уже говорил выше в моем комментарии, вам НАМНОГО лучше задавать вопрос о РЕАЛЬНОЙ проблеме, а не о том, что у вас возникли проблемы с реализацией.Тем не менее:

$('a[href]').each(function(){
  var $this = $(this);
  if($this.text() == '' && $this.children().length = 0){
    $this.remove();
  }
});
0 голосов
/ 02 декабря 2010

Используя jQuery, вы можете использовать:

$('a[href*=#]').each(function (i, item) {
    //Here, item is the DOM item with an anchor.
});

Надеюсь, это поможет! (См .: Атрибут jQuery содержит селектор , .each())

0 голосов
/ 02 декабря 2010
$(function(){
    $('a[href]').each(function(index) {
if(this.hash != ""){
 alert(this.hash);
}
});
});

может быть что-то вроде этого

, если вы хотите удалить все, что не имеет якоря

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

проверить это здесь http://www.jsfiddle.net/dPrsp/

...