如何使用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);
?>
答案 0 :(得分:1)
这应该用JavaScript(JQuery)来处理。您可以使用JQuery的“each”方法,如下所示:
$('a').each(function(index) {
if( $(this).attr('href') == [something] ) {
//Do Something
}
});
答案 1 :(得分:0)
$(function(){
$('a[href]').each(function(index) {
if(this.hash != ""){
alert(this.hash);
}
});
});
也许是这样的
如果你想删除所有没有锚点
$(function(){
$('a').each(function(index) {
if(this.hash == ""){
$(this).detach();
}
});
});
答案 2 :(得分:0)
使用jQuery,您可以使用:
$('a[href*=#]').each(function (i, item) {
//Here, item is the DOM item with an anchor.
});
希望这有帮助!
(参见:jQuery Attribute Contains Selector,.each()
)
答案 3 :(得分:0)
正如我在上面的评论中已经说过的那样,你最好不要问问题是真正的问题,而不是关于你在执行方面遇到麻烦的傻瓜。那说:
$('a[href]').each(function(){
var $this = $(this);
if($this.text() == '' && $this.children().length = 0){
$this.remove();
}
});