• 内部链接孩子们无法正常使用 jquery
  • 发布于 2024-10-15 22:33:22 字数 874 浏览 3 评论 0 原文

    我有一个带有以下 HTML 的下拉菜单:

    <ul id="dropdownmenu" class="dropdown maintopmenu">
    
    <li class="topmenu" link="link0.htm">SELL
        <ul>
            <li link="link1.htm"><span class="menulink">APPLY TO SELL</span>/li>
            <li link="link2.htm"><span class="menulink">FEE/FEATURES</span></li>
            <li link="link3"><span class="menulink">FAQ</span></li>
            <li link="mycart.php?4"><span class="menulink">IMAGE GUIDELINE</span></li>
        </ul>
    </li>
    </ul>
    

    然后我有一个 jquery 函数,该函数应该在单击时转到页面 link=whatever 。不过,它所做的始终是转到第一个 li 链接(主要父级)。 我的猜测是它忽略了该里内的整个块。

    $(function() {
        $('li[link]').click(function() {
        document.location.href=($(this).attr('link'));
    });
    });
    

    我需要它与所有级别的子菜单一起使用。

    I have a dropdown menu with this HTML:

    <ul id="dropdownmenu" class="dropdown maintopmenu">
    
    <li class="topmenu" link="link0.htm">SELL
        <ul>
            <li link="link1.htm"><span class="menulink">APPLY TO SELL</span>/li>
            <li link="link2.htm"><span class="menulink">FEE/FEATURES</span></li>
            <li link="link3"><span class="menulink">FAQ</span></li>
            <li link="mycart.php?4"><span class="menulink">IMAGE GUIDELINE</span></li>
        </ul>
    </li>
    </ul>
    

    Then I have this jquery function which is supposed to go to the page link=whatever on click. What this is doing though, is always going to the first li link (the main parent).
    My guess is it is ignoring the whole block inside of that li.

    $(function() {
        $('li[link]').click(function() {
        document.location.href=($(this).attr('link'));
    });
    });
    

    I need this to work with all levels of submenus.

    如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

    扫码二维码加入Web技术交流群

    发布评论

    需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

    评论(4

    天邊彩虹 2024-10-22 22:33:22

    可能是因为事件正在冒泡到祖先

  • 并触发其处理程序。
  • 您需要使用 event.stopPropagation()(docs) 方法或return false;

    $('li[link]').click(function( event ) {
        document.location.href = ($(this).attr('link'));
        event.stopPropagation();
    });
    

    Probably because the event is bubbling up to the ancestor <li> and firing its handler.

    You need to stop propagation of the event using the event.stopPropagation()(docs) method or return false;.

    $('li[link]').click(function( event ) {
        document.location.href = ($(this).attr('link'));
        event.stopPropagation();
    });
    
    一梦等七年七年为一梦 2024-10-22 22:33:22
    $(function() {
              $('li').click(function(e) {
              var $var = $(this).attr("link");
                  alert($var);
                  e.stopPropagation();
              //document.location.href=($(this).attr('link'));
             } );
        });
    

    使用 e.stopPropagation();

    希望这有帮助

    $(function() {
              $('li').click(function(e) {
              var $var = $(this).attr("link");
                  alert($var);
                  e.stopPropagation();
              //document.location.href=($(this).attr('link'));
             } );
        });
    

    use e.stopPropagation();

    hope this helps

    弥枳 2024-10-22 22:33:22

    我建议不要在 html 中使用奇怪且无效的属性,如果不可避免,请使用 jQuery 创建传统标记,例如:

    $('li').each(
        function(){
            var linkTo = $(this).attr('link');
            $(this).find('span').wrap('<a href="' + linkTo + '"></a>');
        });
    

    JS Fiddle 演示

    但我强烈建议使用 a 元素而不是 JavaScript malarkey,特别是因为 JS/jQuery 在没有 JS 的情况下不会很好地退化。

    I'd suggest not using bizarre, and invalid, attributes for your html and, if that's unavoidable, use jQuery to create traditional mark-up, for example:

    $('li').each(
        function(){
            var linkTo = $(this).attr('link');
            $(this).find('span').wrap('<a href="' + linkTo + '"></a>');
        });
    

    JS Fiddle demo.

    But I'd strongly suggest using the a element instead of the JavaScript malarkey, especially since the JS/jQuery doesn't degrade well in the absence of JS.

    独夜无伴 2024-10-22 22:33:22

    很简单,在 func 末尾放一个 return false 即可。

    $(function() {
        $('li[link]').click(function() {
            document.location.href=($(this).attr('link'));
            return false;
        });
    });
    

    它的工作完美!

    Simple, put a return false at end of func.

    $(function() {
        $('li[link]').click(function() {
            document.location.href=($(this).attr('link'));
            return false;
        });
    });
    

    Its works perfectly!

    ~没有更多了~
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文