如何使用jquery切换2个链接(标记)?

时间:2018-02-15 04:45:19

标签: javascript jquery

我试图切换2个链接(link1和link2)。

单击link1并禁用自身并启用link2,反之亦然。

我有两个问题:

    点击后仍然可以点击
  1. link1。对于link2也是如此。
  2. 在有$(" body")的4行上,我在控制台中收到错误。关于" TypeError :(中间值).apply不是函数"并且它指向jquery.js中的一行
  3. 任何想法我做错了什么?

    由于

    jsfiddle link

    <html
    <head>
        <script src="http://code.jquery.com/jquery-1.12.4.js"></script>
    
        <script type="text/javascript">
        $(document).ready(function(){
            setToggle("domestic");
    
            $('[id^="toggle_"]').on( "click", function() {
                var domInt = $(this).attr("id").replace("toggle_", "").toString();
    
                setToggle(domInt);
            });
    
            function setToggle(domInt) {
                domInt = domInt.toUpperCase();
    
                $("#clicked").append("domInt: " + domInt.toUpperCase() + " | ");
                if (domInt == "DOMESTIC") {
                    $("body").off("click", "#toggle_domestic");
                    $("body").on("click", "#toggle_international");
    
                    $("#clicked").append("clicked domestic<br>");
                } else if (domInt == "INTERNATIONAL") {
                    $("body").on("click", "#toggle_domestic");
                    $("body").off("click", "#toggle_international");
    
                    $("#clicked").append("clicked international<br>");
                }
            }
        });
       </script>
    </head>
    <body>
        <p><a href="javascript:void(0)" id="toggle_domestic">Domestic</a> | <a href="javascript:void(0)" id="toggle_international">International</a></p>
        <div id="clicked"></div>
    </body>
    </html
    

1 个答案:

答案 0 :(得分:0)

$("body").on("click", "#toggle_domestic")/$("body").off("click", "#toggle_international"); 

实际上并未禁用该链接。您可以使用css属性或返回false来停用链接。

var domInt = $(this).attr(&#34; id&#34;)。replace(&#34; toggle _&#34;,&#34;&#34;)。toString();如果需要获取文本

,可以用$(this).text().trim()替换

在这种情况下,使用一个公共类(anchorTag),它定位所有需要的锚标记。因此,点击锚标记会从所有锚标记中删除notActive css类,然后将此nonActive删除到点击的锚标记。

&#13;
&#13;
$(document).ready(function() {
  setToggle("domestic");

  $('.anchorTag').on("click", function() {
    $('.anchorTag').removeClass('notActive');
    $(this).addClass('notActive')
    var domInt = $(this).text().trim();
    setToggle(domInt);
  });

  function setToggle(domInt) {
    domInt = domInt.toUpperCase();

    $("#clicked").append("domInt: " + domInt.toUpperCase() + " | ");
    if (domInt == "DOMESTIC") {
      $("#clicked").append("clicked domestic<br>");
    } else if (domInt == "INTERNATIONAL") {
      $("#clicked").append("clicked international<br>");
    }
  }
});
&#13;
.notActive {
  pointer-events: none;
  cursor: no-drop;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<p><a href="javascript:void(0)" class="anchorTag" id="toggle_domestic">Domestic</a> |
  <a href="javascript:void(0)" class="anchorTag" id="toggle_international">International</a>
</p>
<div id="clicked"></div>
&#13;
&#13;
&#13;