2017-02-02 11 views
1

Чтобы создать гиперссылку, я использую следующий код.Гиперссылка не работает с использованием нокаута. Дает ошибку: Синтаксическая ошибка, непризнанное выражение

<a data-toggle="tab" data-bind="attr: { href: '../Company/Index/' + IndexID }, text: XYZ"></a> 

Основная цель кода - вернуть уровень от текущего.

Созданный HTML выглядит следующим образом.

<a data-toggle="tab" data-bind="attr: { href: '../Company/Index/' + IndexID }, text: DateTimeStamp" href="../Company/Index/0">XYZ</a> 

Когда мы пытаемся нажать на гиперссылку, мы получаем сообщение об ошибке,

Uncaught Error: Syntax error, unrecognized expression: ../Company/Index/0 
    at Function.Sizzle.error (jquery-1.9.0.js:4411) 
    at tokenize (jquery-1.9.0.js:5057) 
    at select (jquery-1.9.0.js:5439) 
    at Function.Sizzle [as find] (jquery-1.9.0.js:3984) 
    at init.find (jquery-1.9.0.js:5553) 
    at init (jquery-1.9.0.js:179) 
    at jQuery (jquery-1.9.0.js:53) 
    at b.show (bootstrap.min.js:9) 
    at HTMLAnchorElement.<anonymous> (bootstrap.min.js:9) 
    at Function.each (jquery-1.9.0.js:631) 
Sizzle.error @ jquery-1.9.0.js:4411 
tokenize @ jquery-1.9.0.js:5057 
select @ jquery-1.9.0.js:5439 
Sizzle @ jquery-1.9.0.js:3984 
find @ jquery-1.9.0.js:5553 
init @ jquery-1.9.0.js:179 
jQuery @ jquery-1.9.0.js:53 
b.show @ bootstrap.min.js:9 
(anonymous) @ bootstrap.min.js:9 
each @ jquery-1.9.0.js:631 
each @ jquery-1.9.0.js:253 
a.fn.tab @ bootstrap.min.js:9 
(anonymous) @ bootstrap.min.js:9 
dispatch @ jquery-1.9.0.js:3045 
elemData.handle @ jquery-1.9.0.js:2721 

Однако, когда мы щелкните правой кнопкой мыши и откройте его в новом язычком, она прекрасно работает.

Любые полезные указатели будут оценены.

+0

Какова Ваша цель? Сделать полный запрос страницы или показать вкладку начальной загрузки? Потому что, поскольку я вижу, что проблема заключается в том, что вы смешиваете URL-адреса (а именно, открываете в новых вкладках) и загружаете плагины загрузочных вкладок (для которых требуется действительный селектор, чтобы определить, какую вкладку показывать); эта функциональность перехватывает поведение 'a' по умолчанию, поэтому запрос не будет выполняться, но до тех пор, как бутстрап, значение в' href' не является допустимым селектором. Поэтому ответ зависит от того, хотите ли вы фактически перемещаться по HTTP-запросу или использовать вкладку начальной загрузки так, как должно быть. –

ответ

2

Эта проблема возникает из-за того, что вы определяете два встречных поведения в своем коде. Атрибут data-toggle="tab" заставляет плагин Tab Bootstrap рассматривать его как триггер табуляции, то есть всякий раз, когда нажимается элемент, связанное содержимое вкладки должно быть видимым. С другой стороны, атрибут href просто предоставляет обычный URL-адрес в вашем случае.

Теперь подумайте об этом: вкладка

  • Bootstrap нуждается действующий JQuery селектор в HREF атрибута, чтобы выяснить, что HTML-фрагмент он должен сделать видимыми,
  • Но есть URL вместо селектор.

Итак:

  • правой кнопкой мыши элемент и выберите открыть в новой вкладке работ, так как в этом случае, навигация не получает перехвачен, браузер просто открывает новую вкладку и заставляет его для перехода к выбранному URL-адресу, и Bootstrap здесь не играет.
  • Просто щелкнув по нему и оставив его на одной вкладке, это не сработает, потому что в этом случае навигация перехватывается Bootstrap и извлекает значение атрибута hrefи пытается использовать его как селектор jQuery, чтобы сделать ссылочный элемент видимый. Очевидно, что, поскольку это скорее URL, а не селектор, он потерпит неудачу.

Так что ответ действительно зависит от того, чего вы на самом деле хотите достичь.

  • Вы хотите, чтобы навигация произошла, а data-toggle="tab" - это просто случайный остаток? Отлично, просто удалите этот атрибут, он будет работать.
  • Или вы хотите использовать функциональные возможности вкладки Bootstrap? Затем укажите действительный селектор вместо URL-адреса.

Я думаю, что второй вариант был ваша цель, и если я не ошибаюсь, href там, потому что вы хотите использовать его в качестве URL для-запроса Ajax, и загрузить содержимое вкладки по требованию ,Если это правильно, атрибут href не поможет вам, вы должны привязать событие click к методу вашей модели просмотра, которая выполняет инициализацию (то есть заполняет себя данными с сервера). Затем вы можете передать URL-адрес запроса ajax, чтобы сделать, как описано here, the code block just above 'Note 3'.

+0

Ох. Виноват. Сейчас работает отлично. Спасибо за объяснение. – Niraj

+0

Добро пожаловать. –