ajax调用后jQuery更新li类属性href

Posted

技术标签:

【中文标题】ajax调用后jQuery更新li类属性href【英文标题】:jQuery update li class attribute href after ajax call 【发布时间】:2016-02-29 15:06:58 【问题描述】:

我正在使用我的 Wordpress 网站,并且有一个弹出模式窗口,它只显示一些单选按钮 (#input_1_1)。更改单选按钮字段的值时,将运行 ajax 调用并执行简单的 mysql 表更新。一切顺利,我想首先更改用于打开窗口的 href 文本。

下面是我到目前为止得到的 javascript,但是从底部算起的第二个 JQuery 行没有执行我想要的更改。甚至只是尝试更改简单的目标网址。

    jQuery(document).ready(function()
        jQuery("#input_1_1").change(function()
            jQuery("body").css("cursor", "wait");
            var commitmentID = jQuery("#gform_1 input[type='radio']:checked").val();
            jQuery('#popmake-710').popmake('close');
            jQuery.ajax(
                url:"<?php bloginfo( 'wpurl' ); ?>/wp-admin/admin-ajax.php",
                type:'POST',
                data:'action=gf_submit_1_1&commitmentID=' + commitmentID,
                success:function(results)
                
                    //Here is the problem I've been working on for too many hours/days now
                    jQuery("#et-secondary-nav > li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563").attr('href',"http://www.TheSameUrlButILikeADifferentTextToIt.com");
                    //See line above
                    jQuery("body").css("cursor", "default");
                
            );
        );
    );

这就是页面那部分的 html 的样子

        <div id="et-secondary-menu">
        <ul id="et-secondary-nav" class="menu">
            <li class="bp-menu bp-profile-nav menu-item menu-item-type-custom menu-item-object-custom menu-item-152"></li>
            <li class="popmake-fast-select-commitment current_commitment_text menu-item menu-item-type-post_type menu-item-object-page menu-item-563" style="cursor: pointer;">
                <a href="http://www.myoriginalurlisjustfine.com/">
                    <i class="wp-svg-heart heart"></i>
                    THIS IS THE TEXT THAT I WANT TO HAVE CHANGED BY THE JQUERY AND IS THE TEXT PRESENTED IN THE SECONDARY WORDPRESS MENU
                </a>
            </li>

【问题讨论】:

【参考方案1】:

当你使用时

jQuery("#et-secondary-nav > li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563") 

这只会选择没有href attr的li,所以你需要使用(> a)

jQuery("#et-secondary-nav > li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563 > a").attr('href',"http://www.TheSameUrlButILikeADifferentTextToIt.com");

【讨论】:

太棒了。我知道我瞄准了错误的对象。但即使进行了这种更改,对“正确”对象也没有影响。由于我不知道如何更改文本,我只是尝试更改 URL,但没有成功。其次:如何格式化 attr 以保留 URL 但更改文本“这是文本...”? @JompaBoy 使用 .text() ... $(selector).text('THIS IS THE TEXT'); 完美!非常感谢您的输入! :)【参考方案2】:
jQuery("#et-secondary-nav > li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563").attr('href',"http://www.TheSameUrlButILikeADifferentTextToIt.com");

您在这里选择的是li 而不是a

改成

jQuery("#et-secondary-nav > li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563 > a").attr('href',"http://www.TheSameUrlButILikeADifferentTextToIt.com");

【讨论】:

【参考方案3】:

使用

jQuery("#et-secondary-nav &gt; li.popmake-fast-select-commitment.current_commitment_text.menu-item.menu-item-type-post_type.menu-item-object-page.menu-item-563 a").attr('href',"http://www.TheSameUrlButILikeADifferentTextToIt.com");

更改href。正如其他人指出的那样,您没有更改&lt;a&gt;,而是更改了&lt;li&gt;

查看https://api.jquery.com/category/selectors/ 以获取有关 jQuery 选择器的参考。

【讨论】:

以上是关于ajax调用后jQuery更新li类属性href的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:单击链接后向li元素添加类,并取消选择所有其他类

使用jQuery函数:选择器 工具类 Ajax

通过ajax调用更新行后使用jQuery对表进行排序

瀑布流

jQuery Ajax封装通用类 (linjq)

如何在 Ajax 加载后执行 javascript?