Jquery $(this) 相对引用

发布于 2024-12-26 05:51:03 字数 593 浏览 0 评论 0原文

因此,我使用 jQuery 创建自己的面包屑菜单,因为我不想加载另一个臃肿的插件。我有这个代码:

    function go_back(sec) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(this).nextAll().remove();
}

通过单击链接来调用。它加载内容区域并删除以下链接。这是每个链接的格式示例:

<span> &gt; <a style="cursor:pointer" OnClick="go_back('4');">Foo</a></span>

加载有效,但以下链接不会删除。我相信这是因为它正在寻找以下 ,但它没有找到。我需要引用父级。我尝试过使用 $(this).parent().nextAll().remove(); 但这也不起作用。有什么帮助吗?

So, I'm creating my own breadcrumbs menu with jQuery since I didn't want to have to load another bloated plugin. I have this code:

    function go_back(sec) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(this).nextAll().remove();
}

Which is called by on click of a link. It loads the content area and removes the following links. This is a sample of the format of each link:

<span> > <a style="cursor:pointer" OnClick="go_back('4');">Foo</a></span>

The loading works, but the following links do not remove. I believe that is because it is looking for a following <a>, however it does not find one. I would need to reference the parent <span>. I have tried using
$(this).parent().nextAll().remove();
however that does not work either. Any help?

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

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

发布评论

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

评论(2

家住魔仙堡 2025-01-02 05:51:03

作为一个快速修复,我建议:

  function go_back(sec, elem) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(elem).parent().nextAll().remove();
  }

html:

<span> > <a style="cursor:pointer" OnClick="go_back('4', this);">Foo</a></span>

但是从长远来看,html 中的 javascript 很糟糕,因此您应该完全摆脱它并设计整个内容,而不依赖于 html 中的内联 javascript。

演示: http://jsfiddle.net/gHh7D/

As a quick fix I would suggest:

  function go_back(sec, elem) {
    $('.content').html('<p>Loading</p>').load('_library_q.php?','sec='+sec);
    $(elem).parent().nextAll().remove();
  }

html:

<span> > <a style="cursor:pointer" OnClick="go_back('4', this);">Foo</a></span>

But javascript in html is awful in the long run so you should get rid of it altogether and design the whole thing without relying on inline javascript in html.

demo: http://jsfiddle.net/gHh7D/

木有鱼丸 2025-01-02 05:51:03

您不能在调用全局函数时调用 $(this)。相反,解决此问题的一种方法是循环访问链接并使用 JQuery 的 .click() 函数 -

$('a').each(function() {
    $(this).click(function() {
        $('.content').html('<p>Loading</p>').load('_library_q.php?', 'sec=' + $(this).attr('id'));
        $(this).parent().nextAll().remove();
    });
});

我向每个链接添加了一个 id 属性,以便您可以使用加载函数的 id 值。您可以在此处查看示例: http://jsfiddle.net/dxAyT/

You cannot call $(this) as you are calling a global function. Instead, one way you could resolve this is by looping through the links and using JQuery's .click() function -

$('a').each(function() {
    $(this).click(function() {
        $('.content').html('<p>Loading</p>').load('_library_q.php?', 'sec=' + $(this).attr('id'));
        $(this).parent().nextAll().remove();
    });
});

I added an id attribute to each link so you can use the id value for the load function. You can see an example here: http://jsfiddle.net/dxAyT/

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