2010-11-22 2 views
2

Я работаю над веб-сайтом, и у него есть несколько ссылок. Когда я нажимаю ссылки, ничего не происходит, даже если строка состояния браузера показывает целевой URL правильно. Я проверил, что нет z-индекса или какой-либо такой проблемы (возможно, что-то пропустил).Некоторые конкретные гиперссылки на сайте не работают

Вот ссылка на сайт - http://www.deals4all.gr/city.php?ename=athens

Оказавшись там, нажмите на поле «Выбор города» и 2 ссылки будут показаны. Попробуйте нажать на любой из них. Ничего не работает. Более того, когда я открываю ссылку в новой вкладке или копирую ссылку, в новом окне, она отлично работает. Я проверил эту проблему в IE, FF и Chrome.

Любая помощь будет высоко оценена. Благодаря!!

ответ

4

Это вопрос JavaScript — Я заметил, что ваш код был запутан/упакован с помощью упаковщика Дина Эдвардса, поэтому я вставил его в http://jsbeautifier.org и быстро нашел проблему:

jQuery('#guides-city-change').click(function() { 
    return !jQuery('#guides-city-list').toggle() 
}); 

При нажатии на ссылку, пузырь пузыря события до #guides-city-change, стрельба выше обработчик. toggle() всегда возвращает объект jQuery, на который он был вызван, и отрицание объекта с ! всегда будет оцениваться до false, что приведет к return false, что приведет к отмене действия по умолчанию <a>, которое первоначально было запущено.

Поскольку нет действия по умолчанию для <div> элементов, самым простым решением является использование event.stopPropagation() вместо:

jQuery('#guides-city-change').click(function (e) { 
    jQuery('#guides-city-list').toggle(); 
    e.stopPropagation(); 
}); 

Side Примечание: если вы используете пакера в целях запутывания то не беспокойтесь. Как вы можете видеть, работать очень легко.

+0

Спасибо за ваш ответ. Как вы уже упоминали, JS упакован, и вы также упомянули, что это легко обойти. Не могли бы вы рассказать о том, как обходить эту ситуацию? –

+0

@Vikram: простой, я просто вставлял весь ваш упакованный JS-код в коробку по адресу http://jsbeautifier.org - он очистит его, распакуя его, а затем добавив все строки и отступы. –

+0

О, вы имели в виду, что , Я думал, ты говоришь о другом. Позвольте мне попробовать. Благодаря!!! –

1

Ссылка работает правильно.

Проблема заключается в том, что навигация по

http://www.deals4all.gr/city.php?ename=athens 

возвращает вас на главную страницу

+0

Поэтому в своем PHP он не определил, что делать после ename = athens. Убедитесь, что вы используете функцию $ _GET для ее получения. – ryryan

+0

Поле «Выбрать город», на которое он ссылается, также находится на главной странице. –

+0

Это не проблема. В PHP все правильно обрабатывается, и тот же код работает безупречно в других доменах. Это, скорее всего, проблема JavaScript, о которой упоминал Энди. Попробует и обновит. –

Смежные вопросы