jQuery (1.6.4), використовуючи append () для додавання якоря, не працює в IE

Мені дійсно є проблеми з використанням функції add() з IE.

Я намагаюся зробити наступне:

  1. Append anchor tag to the body element
  2. Bind a modalwindow plugin to the anchor tag
  3. Fire the click event on the anchor tag to open the modal window
  4. Remove the anchor tag afterwards

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

Як і очікувалося, він працює чудово в Chrome, FF та Opera, але це не в IE.

Я вже спробував вирішити цю проблему:

  1. Mess around with the apostrophs and quotations
  2. Simplify the anchor tag to minimum jQuery object. The h2 tag is, but it won't be shown on the page.

    I have found a workaround to hardcode the anchor tag and modify the attributes, but this is not really what I want. Any ideas are very much appreciated.

    Thank you in advance, Sebastian

0
Що таке ідентифікатор?
додано Автор epascarello, джерело
Якщо посилання буде додано після завантаження DOM, використання кнопки "у" не спрацює, оскільки він не може приєднати подію кліків до того, що ще не існує. Отже, вам потрібно використовувати LIVE і прив'язувати подію кліків до цього. Не могли б ви скопіювати більше вашого сценарію/html, щоб я міг відтворити проблему.
додано Автор Marco Johannesen, джерело
@espascarello: ідентифікатор може бути буквальним рядком.
додано Автор Sebastian Roland, джерело
@ Марко Йоханнесен: Я перевірив функцію live() і повернувся. Дякую!
додано Автор Sebastian Roland, джерело

1 Відповіді

Я б очікував, що ваш код виглядатиме так:

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

Використання селекторів, таких як element # id значно повільніше, ніж просто робити #id . Плюс у певних версіях IE, здається, є проблеми.

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

1
додано
Ви спробували наведені вище коди зі зміною падіння a з селектора?
додано Автор epascarello, джерело
Звичайно, ви маєте рацію, але я все ще перебуваю на етапі проектування. Спочатку я просто хочу, щоб вона працювала;) Але все одно спасибі.
додано Автор Sebastian Roland, джерело
ІТ КПІ - JavaScript
ІТ КПІ - JavaScript
504 учасників

співтовариство javascript розробників в Telegram