Элегантное самое короткое решение
Демонстрация в реальном времени
fragment = '#/story/article-3/';
$('.item a[href$="' + fragment + '"]').parent().css({background:'red'});
Еще один менее элегантный вариант, но пример того, почему ваш код не работал должным образом.
Live Demo 2
Без использования .each
вы получите только href для первой ссылки, поэтому она никогда не сможет соответствовать другой. В общем, я просто взял вашу логику, обернул ее каждой и немного изменил ваш селектор, чтобы сделать фон div красным. Однако я рекомендую первый вариант.
//var fragment = location.hash;
fragment = '#/story/article-3/';
$('.item').find('a').each(
function(){
array_string = $(this).attr('href').split('#');
last_item = array_string[array_string.length - 1];
if(fragment == '#'+last_item)
{
alert('match!');
$(this).css({background:'red'});
}
}
);