性能 - jquery ui对话框的问题

时间:2013-09-14 11:08:41

标签: jquery jquery-ui jquery-ui-dialog

我网站的很多用户报告了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-container中也很重要。

祝你好运 岸堤

1 个答案:

答案 0 :(得分:0)

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

  

然而,它会比使用类选择器慢,所以如果可以的话,可以利用类来对类似的元素进行分组

通过分配类并按类选择(例如$('.popup-pos-link'),同样适用于.pos-link

,可以轻松解决此问题