Всплывающая функция jquery не работает в IE - PullRequest
0 голосов
/ 02 апреля 2011

Я думаю, что что-то не так с моими селекторами, из-за которых мой всплывающий скрипт jquery не работает в IE, (FF и chrome в порядке)

edit: в IE происходит то, что исчезает, но не появляется всплывающее окно.

javasctipt

$(document).ready(function(){

    $("a[name*='add-ad-to-']").click(function () {
        var divname= this.name;
        $("#"+divname).slideDown("slow");

        $('body').append('<div id="fade"></div>');
        $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn();

        return false;
    });


});

html (сгенерирован динамически, вероятно, в этом нет ничего плохого, поскольку FF и chrome работают нормально)

    //the link
        echo'<a class="noul" name="add-ad-to-'.$value.'" href="#">Link</a>';

   //the popup   
        echo'<div class="box-add lucida" id="add-ad-to-'.$value.'" style="display:none;">

            //content

        </div>';

edit:

вот css но я не думаю, что это проблема

 #fade {display:none;background:#000;position: fixed; left: 0; top: 0;width: 100%; height: 100%;opacity: .80;z-index: 9999;}
.box-add{position:absolute;left:110px;top:-140px;z-index:99999;padding:30px 40px 10px 40px;background-color:#FFF;border:5px solid #888;text-align:left;color:#555;font-size:11px;font-weight:normal;line-height:22px;width:500px;}

Ответы [ 2 ]

0 голосов
/ 02 апреля 2011

Ваша проблема может быть в версии, если вы используете IE, или в какой версии IE считает, что она должна использовать. JQuery не поддерживает IE 6. Если вы используете IE8, вам, возможно, придется вставить в свой HTML IE = edge, чтобы ваш браузер вел себя как IE8 вместо автоматической эмуляции более старой версии.

Для этого добавьте метатег, подобный приведенному ниже, в заголовок вашего HTML.

<meta http-equiv="X-UA-Compatible" contant="IE=edge" />
0 голосов
/ 02 апреля 2011

Я подозреваю, что у вас возникнут проблемы с использованием одного и того же значения для name для a элемента и id для div. Предложите добавить что-то к имени при определении id для div, например ::

$("#div-"+divname).slideDown("slow");

(И, конечно, соответственно изменить HTML.)

Это потому, что IE имеет проблемы с совмещением пространств имен и имеет тенденцию сбрасывать name s с id s. Например, попробуйте этот пример в Chrome или Firefox против IE:

HTML:

<a name='foo'>This is the foo anchor</a>
<div id='foo'>This is the foo element</div>
<a name='bar'>This is the bar anchor</a>

JavaScript:

var foo = document.getElementById('foo'),
    bar = document.getElementById('bar');
display("foo.tagName = " + foo.tagName);
display("bar.tagName = " + (bar ? bar.tagName : "(none)"));

Правильный вывод:

foo.tagName = DIV
bar.tagName = (none)

(«объект», о котором идет речь в bar, равен null.)

Вывод IE6 и IE7:

foo.tagName = A
bar.tagName = A

document.getElementById должен игнорировать a с name на них, но не на IE6 или IE7, и поэтому IE выбирает привязку вместо div.

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