1

当插件/小部件需要使用自定义“事件”方法而不是标准 jQuery 事件时,我无法确定要使用的正确语法。

jQuery UI MultiSelect Widget不支持该方法change,而是提供了一个click在选中或取消选中复选框时触发的事件。我正在尝试使用小部件文档中为click事件提供的语法,以便我可以替换几个更改函数,包括下面显示的函数,但我无法找出正确的语法。该click事件的结构是:

$("[name=Item]").on("multiselectclick", function (event, ui) {...});

我试过在大括号之间插入函数,我也试过.on("multiselectclick", function () {...});没有成功,所以我假设我需要在这里插入一些东西:(event, ui)

我已经设法通过使用稍微不同的方法使功能部分工作$("[name=Item]").multiselect({ click: function (event, ui) {...},但我真的很想了解如何使用插件的自定义事件,以便让功能正常工作。我在这里发布了一个非常简单的例子http://jsfiddle.net/chayacooper/cZRy9/5/的小提琴,并附上了说明什么不正常工作的注释。

我试图change用小部件的click事件替换事件的功能之一:

$("[name=Item]").change(function(){
    $("#Styles1, #Styles2").hide();
    $(".accordion").accordion("option", "active", false);
    if( $("[name=Item]").val() === "Dresses"){
        $("#Styles1").show();
        $(".accordion").accordion("option", "active", 0);
        $('varItem').val('Dresses');
    }
    else {...} 
});
4

1 回答 1

1

Styles关于未选中时不隐藏元素的第一个问题dresses很简单。代码中没有任何内容可以检查复选框的状态,只有值

修复:

if ((ui.value) === "Dresses" && ui.checked)

在 jQuery UI 模式化小部件中使用ui对象通常是数据或状态的最佳来源,而不是使用 jQuery 选择器来查找相同的东西。

我从来没有使用过这个插件,所以为了弄清楚我可以使用什么,我只是console.log(ui)在点击处理程序中使用,这样我就可以检查ui对象以查看它包含哪些属性,并找到checked要添加到上述if条件的属性

如果您在更复杂的小部件(如 jQueryUI 日期选择器)上执行相同操作,将会看到相当多的ui属性,其中一些也是方法函数

DEMO(使用自定义事件)

http://jsfiddle.net/cZRy9/2/

于 2013-04-13T22:24:00.857 回答