你知道一种方法如何检查current_url()是否等同于一个链接的href * 而不使用JavaScript?在这样做时,如果href相同,则将class="active"添加到链接中。
current_url()
class="active"
**编辑:**首先想到的是制作一个所有href值的数组,然后使用foreach来比较每个值,但也许你有比这更好的方法?
foreach
q1qsirdb1#
你可以像这样扩展URL助手中的锚函数。
if ( ! function_exists('anchor')) { function anchor($uri = '', $title = '', $attributes = '', $apply_active = FALSE) { $title = (string) $title; if ( ! is_array($uri)) { $site_url = ( ! preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri; } else { $site_url = site_url($uri); } if ($title == '') { $title = $site_url; } if ($attributes != '') { $attributes = _parse_attributes($attributes); } if ( $uri == uri_string() AND $apply_active ) { $active = ' class="'.$apply_active.'"'; } else $active = NULL; return '<a href="'.$site_url.'"'.$attributes.$active.'>'.$title.'</a>'; } }
我还没有测试过这个,所以检查一下bug。像这样调用锚函数:
anchor('my_page', 'My Page', '', 'active');
有关如何扩展helper的信息,请参阅文档:http://ellislab.com/codeigniter/user_guide/general/helpers.html
**编辑:**好的,我已经测试了它,并更新了我的答案,所以它现在应该工作得很好。
dauxcl2d2#
感谢Nick Pyett:
if(!function_exists('anchor')){ function anchor($uri = '', $title = '', $attributes = '', $apply_active = FALSE){ if(!is_array($uri)){ $site_url = (!preg_match('!^\w+://! i', $uri)) ? site_url($uri) : $uri; } else { $site_url = site_url($uri); } $title = (bool)$title ? $title : $site_url; if($attributes != '') $attributes = _parse_attributes($attributes); $active = $uri == uri_string() && $apply_active ? ' class="'.$apply_active.'"' : NULL; return '<a href="'.$site_url.'"'.$attributes.$active.'>'.$title.'</a>'; } }
2条答案
按热度按时间q1qsirdb1#
你可以像这样扩展URL助手中的锚函数。
我还没有测试过这个,所以检查一下bug。像这样调用锚函数:
有关如何扩展helper的信息,请参阅文档:http://ellislab.com/codeigniter/user_guide/general/helpers.html
**编辑:**好的,我已经测试了它,并更新了我的答案,所以它现在应该工作得很好。
dauxcl2d2#
感谢Nick Pyett: