在jquery成功之后,javascript替换url,屏幕移动指定的页面元素id ...但是屏幕再次移动到顶部位置

时间:2012-02-18 15:25:07

标签: php javascript jquery

如果$list[$i][wo_status]没有价值, 我叫whatson_read函数, 它为数据库操作执行ajax。 成功后,网址重新开始 屏幕位置移动到指定元素ID的位置。

但几微秒后,secreen移动到顶部位置。 为什么会这样?

php部分

      if ($list[$i][wo_status])
          echo "<a href='" . $list[$i][url]  . "' $target_link >";
      else
          echo "<a href='#' onclick='javascript:whatson_read(\"" . $list[$i][url] . "\", " . $list[$i][wo_id] . "); return false' >";

Javascript部分

<script type="text/javascript">
function whatson_read(url, wo_id) {

    var post_url = "<?=$g4[bbs_path]?>/ajax_whatson.php?w=r&wo_id="+wo_id;
    var data = "";

    $.ajax({
        type:"POST",
        url:post_url,
        data:data,
        async:false,
        error:function() {
            alert('fail');
        },
        success: function(){
            <? if ($target) { ?>
        parent.<?=$target?>.location.href = url ;
            <? } else { ?>
        location.href = url;
        <? } ?>
        }
     });
}
</script>

4 个答案:

答案 0 :(得分:1)

请不要使用<a href="javascript:">。那是一个古老的,过时的做法。

目前,您的链接指向页内锚点#。该锚点在页面上不存在,因此当您单击该链接时,浏览器会将您带到页面顶部。

您需要return false处理程序中的onclick来阻止click事件的默认操作。这在JavaScript中很常见:

<a href="#" onclick="whatson_read(...); return false;">

答案 1 :(得分:0)

您的问题最有可能出现在PHP的else部分。

href='#'替换为href='javascript: void(0)'

答案 2 :(得分:0)

使用javascript:;而不是将#放在href标记的<a>属性中。

同时在binding function链接时,您可以创建该函数return false,以便不再传播该事件。 Event propagation使浏览器转到页面顶部。

此外,javascript:无需onclick event个文字。 Html Onclick event可以直接接受javascript代码。

答案 3 :(得分:0)

感谢大家。

我发现你的建议对我的计划有好处, 而我的问题是由于IE漏洞相关的锚。 但是,问题没有解决。

http://www.webmasterworld.com/html/3322666.htm

我改变了

<a name="c_<?=$comment_id?>"></a>

<a name="c_<?=$comment_id?>" id="c_<?=$comment_id?>"></a>