Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 下拉列表是如何更新的?_Javascript_Jquery_Html_Ajax - Fatal编程技术网

Javascript 下拉列表是如何更新的?

Javascript 下拉列表是如何更新的?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,这是一个更复杂的问题,我试图将js事件处理程序结合在一起。在阅读了我早期的帖子后,我意识到我不确定我网站上的一个行为是如何运作的,所以我想把它作为一个新的主题发布 基本上,我正在使用一个商业wordpress插件,它使用大量非常复杂的JS/AJAX代码根据用户的选择来更新一些下拉菜单例如,如果您在下拉菜单#1中选择“选项1”,下拉菜单#2将更新为“a、b和c”,如果您在下拉菜单#1中选择“选项2”,下拉菜单#2将显示“x、y和z” 问题在于,我不知道插件如何检测下拉菜单#1中的更改以更新下拉菜单

这是一个更复杂的问题,我试图将js事件处理程序结合在一起。在阅读了我早期的帖子后,我意识到我不确定我网站上的一个行为是如何运作的,所以我想把它作为一个新的主题发布

基本上,我正在使用一个商业wordpress插件,它使用大量非常复杂的JS/AJAX代码根据用户的选择来更新一些下拉菜单例如,如果您在下拉菜单#1中选择“选项1”,下拉菜单#2将更新为“a、b和c”,如果您在下拉菜单#1中选择“选项2”,下拉菜单#2将显示“x、y和z”

问题在于,我不知道插件如何检测下拉菜单#1中的更改以更新下拉菜单#2中的选项。通常,有一种onClick事件来处理这些类型的事件,但是在搜索代码之后,我找不到任何东西


我认为,与其在这里发布完整的代码,不如让您更容易地找到,这样您就可以自己寻找了。如果有人能告诉我如何检测下拉菜单的变化,以及什么功能在处理更新,我将不胜感激

在解释示例内容后编辑:我查看了目录/购物车的行为。所有的代码都很小,很难阅读,但看起来它们使用的是更改函数。不管他们是不是,如果我是你,我会用零钱。您在使用的代码中所做的操作看起来是正确的。

通过使用下拉元素的通用事件“onchange”来检测更改

onchange可以内联绑定,例如:

<select onchange="HandleChange(this);">

或者使用客户端脚本,它可以与attachEvent等命令绑定 或者addEventListener,取决于浏览器,我很确定这是正确的 jQuery在幕后使用的内容


问题是:你为什么问这个?你的目标是什么?

我认为你想要的代码被缩小了,这使得阅读变得非常困难,但是这一位
f(k)。更改
f(I)。在“ProductoptionsMenu”函数中更改
可能就是正在进行工作的那一位(f是jqnc(),我怀疑这是jQueryNonConflict函数)k和i是什么部分取决于哪些变量作为l、g、o和p传递

关于您的评论,我尝试了以下脚本: 抱歉,我只能运行此脚本:

$('#options-1 option').each(function(){
    $(this).parent().after('<input type="radio" name="options-1radio" value="'+$(this).val()+'" /> - '+$(this).text()+'<br />');
});
$('#options-1').after('<br />');
$('input[name=options-1radio]').click(function(){
    radioVal = $('input[name=options-1radio]:checked').val();
    $('#options-1').val(radioVal);
    $('#options-1').change();
});
//$('#options-1').hide();
$(“#选项-1选项”)。每个(函数(){
$(this.parent().after('-'+$(this.text()+'
'); }); $(“#options-1”)。在(“
”之后; $('input[name=options-1radio]')。单击(函数(){ radioVal=$('input[name=options-1radio]:checked').val(); $(#options-1').val(radioVal); $('#选项-1')。更改(); }); //$(“#选项-1”).hide();
但遗憾的是,我遇到了与您相同的问题,即它没有触发激活价格查询的开关。我得到了一个“太多递归”错误,但是在没有运行上面的代码的情况下似乎会触发。我不知道这是您添加的代码还是原始源代码


祝你在解决这个问题上取得最好的成绩。如果我有什么想法,我会发布。

在页面底部有一个带有.change标记的jquery函数,它只是通过该函数更新值。它将一些值传递到那里,并将其附加到较低的值上

 $(function(){
    $("#options-1 option").each(function(i, e) {
        $("<input type='radio' name='r' />")
        .attr("value", $(this).val())
        .attr("checked", i == 0)
        .click(function () {
            $("#options-1").val($(this).val());
        })
        .appendTo("#r");
       $("#options-1").change(function(){
       $("input[name='r'][value='"+this.value+"']").attr("checked","checked");
});
});
});

$("#options-1").change(function(){
$("input[name='r'][value='"+this.value+"']").attr("checked","checked");

});
$(函数(){
$(“#选项-1选项”)。每个(功能(即,e){
$("")
.attr(“value”,$(this.val())
.attr(“选中”,i==0)
。单击(函数(){
$(“#options-1”).val($(this.val());
})
.附于(“#r”);
$(“#选项-1”)。更改(函数(){
$(“input[name='r'][value=”+this.value+“']”)attr(“checked”、“checked”);
});
});
});
$(“#选项-1”)。更改(函数(){
$(“input[name='r'][value=”+this.value+“']”)attr(“checked”、“checked”);
});

事实上,我添加了这个-它只是负责将一些菜单转换为单选按钮,而单选按钮则是另一整罐蠕虫。我真正感兴趣的是如何检测#options-1I的更改我无法编辑插件的HTML,因此我需要在不丢失功能的情况下使用jQuery引入一些表单元素。没有onchange处理程序(据我所知)。第一个select具有id options-1,它只是基于该选项从中获取值。因此,如果我尝试使用onchange或onClick事件处理程序调用此函数,我将如何操作?有那么简单吗?这取决于你想做什么。如果代码设置正确,并且您只需要触发在更改#option-1时执行的函数,那么您应该能够执行$('#option-1').change();这将告诉脚本下拉列表已更改并相应地做出响应(当您fdo类似于$(“#option-1”).val(“新值”)时,下拉列表不会更改的原因是,有时这并不是您希望它执行的操作。更改();必须手动触发(在脚本中或通过“手动”输入))我不确定你是否看到了我的另一篇文章,但我正在尝试使用jquery将下拉列表替换为单选按钮。单选按钮成功更改了下拉列表#1中的值,但随后的更改不会出现在下拉列表#2中。。。我已经在使用$(“#options-1”)。当用户选择其中一个单选按钮时进行更改,但下拉菜单#2中仍然没有更改。