这是一个更复杂的earlier post,我试图将js事件处理程序绑定在一起。我在审核了我的帖子后发现,我不确定我网站上的某个行为是如何工作的,所以我想把它作为一个新主题发布。
基本上,我正在使用商业wordpress插件,它使用许多非常复杂的JS / AJAX代码来更新一些下拉菜单,具体取决于用户的选择。 例如,如果您在下拉菜单#1中选择“选项1”,则下拉菜单#2会更新为'a,b& c'如果你在下拉菜单#1中选择'选项2',下拉菜单#2将显示'x,y& Z”。
问题是我不知道插件如何检测下拉菜单#1中的更改,以便更新下拉列表#2中的选项。通常,有一些onClick事件处理这些类型的事件,但在搜索代码后,我找不到任何东西。
我认为可能更容易将您指向actual site,而不是在此处发布完整代码,以便您可以自己查找。如果有人能告诉我如何检测下拉菜单更改以及处理更新的功能,我将非常感激。
答案 0 :(得分:1)
我认为你想要的代码是缩小的,这使得它很难阅读,但是'ProductOptionsMenus'函数中的这个位f(k).change
或f(i).change
可能就是这样做的工作(f是jqnc) ()我怀疑是jQueryNonConflict fubnction)什么k和我部分取决于哪些变量传递为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 :(得分:0)
在解释样本内容后编辑:我看了一下似乎是目录/购物车的行为。所有代码都缩小并且难以阅读,但看起来它们正在使用更改函数。无论他们是否存在,如果我是你,我会改变。你正在玩的代码中你正在做的事情看起来像是你有正确的想法。
答案 2 :(得分:0)
使用下拉元素的通用事件“onchange”检测更改。
onchange可以内联绑定,例如:
<select onchange="HandleChange(this);">
或者使用客户端脚本,它可以与attachEvent之类的命令绑定 或者addEventListener,具体取决于浏览器,我很确定 jQuery在幕后使用的是什么。
问题是:你为什么这么问?你的目标是什么?
答案 3 :(得分:0)
在页面的底部有一个带有.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");
});