下拉如何更新?

时间:2010-10-21 07:54:57

标签: javascript jquery html ajax

这是一个更复杂的earlier post,我试图将js事件处理程序绑定在一起。我在审核了我的帖子后发现,我不确定我网站上的某个行为是如何工作的,所以我想把它作为一个新主题发布。

基本上,我正在使用商业wordpress插件,它使用许多非常复杂的JS / AJAX代码来更新一些下拉菜单,具体取决于用户的选择。 例如,如果您在下拉菜单#1中选择“选项1”,则下拉菜单#2会更新为'a,b& c'如果你在下拉菜单#1中选择'选项2',下拉菜单#2将显示'x,y& Z”。

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

我认为可能更容易将您指向actual site,而不是在此处发布完整代码,以便您可以自己查找。如果有人能告诉我如何检测下拉菜单更改以及处理更新的功能,我将非常感激。

4 个答案:

答案 0 :(得分:1)

我认为你想要的代码是缩小的,这使得它很难阅读,但是'ProductOptionsMenus'函数中的这个位f(k).changef(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");

});