jQuery (1.6.4) с использованием append () для добавления якоря не работает в IE - PullRequest
0 голосов
/ 28 октября 2011

У меня действительно проблемы с использованием функции append () с IE.

Я пытаюсь сделать следующее:

  1. Добавление тега привязки к элементу body
  2. Привязать плагин модального окна к тегу привязки
  3. Запустить событие click для тега привязки, чтобы открыть модальное окно
  4. Удалить тег привязки впоследствии

    if($('a#' + id).length == 0){
        $('body').append('<a id=\"' + id + '\" href=\"' + gJsAppBasePath + url + '\" class=\"iframe\" title=\"' + title + '\"><\a>');
    
        $('a#' + id).fancybox({
            'hideOnContentClick': false,
            width: width,
            height: height
        });
    }
    
    $('a#' + id).click();
    
    $('a#' + id).remove();
    

Как и ожидалось, он отлично работает в Chrome, FF и Opera, но не в IE.

Что я уже пытался решить эту проблему:

  1. Возиться с апострофами и цитатами
  2. Упростить тег привязки до минимума <a href="../index.html>&nbsp;</a>
  3. Попробуйте то же самое с другим тегом <h2>BlaBla</h2>

Якорный тег никогда не инициализируется надлежащим объектом jQuery. Тег h2 есть, но он не будет отображаться на странице.

Я нашел обходной путь для жесткого кодирования тега привязки и изменения атрибутов, но на самом деле это не то, чего я хочу. Любые идеи очень ценятся.

Заранее спасибо, Себастьян

1 Ответ

1 голос
/ 28 октября 2011

Я бы ожидал, что ваш код будет выглядеть примерно так:

var anchor = $('#' + id);
if(anchor.length === 0){
    anchor = $('<a id=\"' + id + '\" href=\"' + gJsAppBasePath + url + '\" class=\"iframe\" title=\"' + title + '\"><\a>'); 
    $('body').append( anchor );
    anchor.fancybox({
        'hideOnContentClick': false,
        width: width,
        height: height
    });
}
anchor.click().remove();

Использование селекторов типа element#id намного медленнее, чем просто #id.Плюс в некоторых версиях IE, похоже, есть проблемы.

Также $('a#' + id) стоит дорого, и вы делаете это несколько раз.Нет необходимости делать это снова и снова.Вам просто нужно сделать это один раз и повторно использовать его с помощью переменных или цепочек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...