0

我网站的很多用户报告 jquery ui 对话框存在问题。一些 IE 用户有消息说脚本运行时间很长。一些 Opera 用户告诉加载网站时所有的对话框都会弹出,并且一切都变慢了,或者他们根本无法关闭它们。这是我使用的代码:

<?php foreach ($buffs as $own_buff): ?>
<div style="display:none">
    <div id="popup-pos-link-<?php echo $own_buff['id']?>" style="position: relative">
         <img src="<?php echo $html->url("img/Sektor" . $own_buff['sector'] . ".png"); ?>" title="some text" alt="some text" />
         <img id="poscross-<?php echo $own_buff['id']?>" src="<?php echo $html->url('img/cross.png'); ?>" style="width: 20px; height: 20px; position: absolute;left: <?php echo $own_buff['xcoord']; ?>px; top: <?php echo $own_buff['ycoord']; ?>px;" />
    </div>
</div>
<?php endforeach; ?>

这是打开对话框的链接的代码:

<?php foreach ($buffs as $own_buff): ?>
<a href="#popup-pos-link-<?php echo $own_buff['id']?>" id="pos-link-<?php echo $own_buff['id']?>">
    <img src="<?php echo $html->url('img/lupe.gif')?>" title="<?php echo __('view_map'); ?>" alt="<?php echo __('view_map'); ?>" style="width:16px;height:16px;" />
</a>    
<?php endforeach; ?>

这是用于创建对话框并在链接上为它们制作点击事件的 javascript 代码:

<script type="text/javascript">
$(document).ready(function() {
    $('[id^=popup-pos-link]').dialog({
          autoOpen: false,
          modal: true,
          width: 'auto'
    });

    $('[id^=pos-link]').click(function(e) {
        $('#popup-' + $(this).attr('id')).dialog("open");
        e.preventDefault();
    });
});
</script>

至少我自己无法产生错误。但是报告问题的用户一直在使用 Opera 或 Internet-Explorer,而且他们中的大多数使用 64 位的 windows 或 ubuntu。

有人知道该代码可能会出现什么样的问题吗?

知道此代码通过 ajax 加载到现有的 div 容器中可能也很重要。

最好的问候安迪

4

1 回答 1

0

您的$('[id^=popup-pos-link]')选择器可能是原因,参见。jQuery的网站

但是它会比使用类选择器慢,因此如果可以的话,可以利用类来对类似元素进行分组

通过分配类和按类选择来轻松解决此问题,$('.popup-pos-link')例如.pos-link

于 2013-09-14T11:42:04.487 回答