我网站的很多用户报告了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中也很重要。
祝你好运 岸堤
答案 0 :(得分:0)
您的$('[id^=popup-pos-link]')
选择器可能是原因,参见jQuery's website
然而,它会比使用类选择器慢,所以如果可以的话,可以利用类来对类似的元素进行分组
通过分配类并按类选择(例如$('.popup-pos-link')
,同样适用于.pos-link