关于更改URL或加载URL的Jquery问题

时间:2017-08-18 12:38:11

标签: javascript jquery html css

使用下面的脚本,我试图加载变量的输出" url"在浏览器中单击锚标记,执行它时会在警告框中显示预期的结果路径,但它会加载锚标记中提到的路径。我想在浏览器的相同选项卡中加载输出路径。请帮我解决这个问题。

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>
    $(document).ready(function(){   
        $("a").on('click', function(){
            var reqURL = window.location.href;
            var hrefVal = $(this).attr('href');
            var url;        
            if(hrefVal.indexOf("http")== -1){
                if(reqURL.indexOf("/ca-en") != -1){
                    url="http://www.mywebsite.com/site2"+hrefVal;
                }else if(reqURL.indexOf("/ca-fr")> -1){
                    url="http://www.mywebsite.com/site3"+hrefVal;
                }else{
                    url="http://www.mywebsite.com"+hrefVal;     
                }
                alert(url);
                window.open(url,"_self");
            }       
        });
    });
    </script>
</head>

<body>
    <ul>
    <li>
        <a class="category" href="/home.html">home<span class="icon plus"></span></a>
        <ul class="submenu">
            <li><a href="/home/abc.html">abc</a></li>
            <li><a href="/home/xyz.html">xyz</a></li>
            <li><a href="/home/tam.html">tam</a></li>
        </ul>
    </li>
    </ul>
</body>
</html>

4 个答案:

答案 0 :(得分:0)

您需要在onclick上添加anchor tag功能。否则,在javascrip href加载之前,它始终会重定向到anchor tag window.open路径。

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
    <script>

    function redirect(parameter){
            var reqURL = window.location.href;
            var hrefVal = parameter;
            var url;        
            if(hrefVal.indexOf("http")== -1){
                if(reqURL.indexOf("/ca-en") != -1){
                    url="http://www.mywebsite.com/site2"+hrefVal;
                }else if(reqURL.indexOf("/ca-fr")> -1){
                    url="http://www.mywebsite.com/site3"+hrefVal;
                }else{
                    url="http://www.mywebsite.com"+hrefVal;     
                }
                alert(url);
                window.open(url,"_self");

            }
    }

    </script>
</head>

<body>
    <ul>
    <li>
        <a class="category" href="/home.html">home<span class="icon plus"></span></a>
        <ul class="submenu">
            <li><a href="#" onclick="redirect('/home/abc.html')">abc</a></li>
            <li><a href="#" onclick="redirect('/home/xyz.html')">xyz</a></li>
            <li><a href="#" onclick="redirect('/home/tam.html')">tam</a></li>
        </ul>
    </li>
    </ul>
</body>
</html>

答案 1 :(得分:0)

NSDictionary *_response = @
{
    @"message":checkForNil([response message])
],...

很简单..

答案 2 :(得分:0)

问题在于您何时使用<a>代码,它曾用于重定向到您在href中给出的任何值。因此,在执行脚本之前,您可能会阻止<a>标记的默认行为。

event.preventDefault()脚本中使用onclick。这会阻止您<a>代码的默认重定向。

找到fiddler供您参考。

希望它有所帮助。

答案 3 :(得分:0)

在执行自定义行为逻辑之前,必须停止锚标记的默认行为。您的代码可以写成如下:

<script>
$(function(){   
    $("a").on('click', function(e){
        e.preventDefault();
        var reqURL = window.location.href;
        var hrefVal = $(this).attr('href');
        var url;        
        if(hrefVal.indexOf("http")== -1){
            if(reqURL.indexOf("/ca-en") != -1){
                url="http://www.mywebsite.com/site2"+hrefVal;
            }else if(reqURL.indexOf("/ca-fr")> -1){
                url="http://www.mywebsite.com/site3"+hrefVal;
            }else{
                url="http://www.mywebsite.com"+hrefVal;     
            }
            alert(url);
            window.open(url,"_self");
        }       
    });
});
</script>