【问题标题】:jQuery event when specific option is selected with Ajax HTML structure使用 Ajax HTML 结构选择特定选项时的 jQuery 事件
【发布时间】:2019-08-08 00:50:22
【问题描述】:

我想在选择特定选项时创建一个 jQuery 事件。我很熟悉如何使用一般的下拉结构来做到这一点,但我的是一个但不寻常的,它不起作用:

HTML

<span class="input-wrapper">
    <select name="country" id="billing_country" class="country_select" autocomplete="country" tabindex="-1" aria-hidden="true">
        <option value="" selected="selected">Select a country…</option>
        <option value="BE">Belgium</option>
        <option value="NL" selected="selected">Netherlands</option>
    </select>
    <span class="select2-container" dir="ltr" style="width: 100%;">
        <span class="selection">
            <span class="select2-selection" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-labelledby="select2-billing_country-container" role="combobox">
                <span class="select2-selection__rendered" id="select2-billing_country-container" role="textbox" aria-readonly="true" title="Belgium" style="color: rgb(51, 51, 51);">Belgium</span>
            </span>
        </span>
    </span>
</span>

我的 jQuery 尝试:

jQuery('#billing_country').change(function(){
    jQuery(document).ajaxComplete( function() {
        if( jQuery('#select2-billing_country-container').attr('title') == 'Netherlands'){
            jQuery('#billing_address_2_field').addClass('hide'); // random event
        }
    });
});

上述情况是当你选择另一个国家时&lt;option&gt;没有随着selected="selected"属性改变。唯一改变的是来自#select2-billing_country-container 的属性title。并且当你改变选择时,Ajax 也参与其中。

我错过了什么或者这怎么能更好?


更新 上面的 jQuery 总体上是正确的,它与其他 jQuery 函数有一些冲突。它唯一的事情是不同的,就是在页面加载时,下拉结构正在使用常规&lt;select&gt;&lt;option&gt;元素,但在选择不同的选项时,它将使用&lt;span&gt; refors进入ajax请求时。所以上面和道格的回答给出了一个完整的结果。

【问题讨论】:

  • id 为 billing_country 的元素在哪里?我看到的只是国家/地区的 ID。
  • @DougF 是的,我已经改进了它。不过这不是这里的问题,我对原来的 html 做了一点修改。
  • 问题是,您没有发出任何类型的 Ajax 请求,因此您的 ajaxComplete 下的代码不会执行。此外,您没有具有类元素的 div,因此无论如何您都不会看到任何事情发生。
  • 我查看了结帐页面并使用 jQuery("div.element") 进行了查找,但没有返回任何内容。
  • 请在源控制台中查找第 17 行的实际元素,JS 文件名为 checkout-page.js

标签: javascript jquery html ajax select


【解决方案1】:

更新

在页面加载时,正在查看选择菜单,而不是 HTML 结构,因此在页面加载时您需要使用以下代码:

    if( jQuery('#billing_country').val() == 'NL'){
        jQuery('#billing_address_2_field').css('display', 'none');
    }

您现在可以在页面上保留更改事件。

【讨论】:

  • 你能看看原始页面吗?因为这是我所做的,除了不使用function HideAddressTwo。我只是完全编码它。在页面加载时,当预先选择国家/地区时,它不起作用。
  • @Demian 是的,我明白你的意思。我已经更新了答案。
  • 是的,这么小的细节,它就成功了。感谢您的时间和精力。高度赞赏。
  • 总是小细节不是吗? :) 很高兴为您提供帮助,祝您度过愉快的一天。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-21
  • 1970-01-01
  • 2021-09-26
相关资源
最近更新 更多