使用ddSlick并按值而不是索引选择列表中的项目

时间:2013-02-20 18:22:03

标签: javascript jquery

我使用ddSlick将我的下拉菜单更改为更漂亮的菜单;

http://designwithpc.com/Plugins/ddSlick

但我有一个问题。我依赖于以编程方式更改列表中的选定项目,但我必须按值而不是索引来完成。所以这是通过索引选择列表项的代码;

$('#demoSetSelected').ddslick('select', {index: 1 });

我似乎无法在文档中找到任何方法,认为可能有人遇到并解决了这个问题。或者,如果知道另一个插件与ddSlick做同样的工作?

5 个答案:

答案 0 :(得分:1)

我有这个问题,而且解决方法很难看 - 基本上,我必须遍历ddslick所持有的所有项目,匹配值,并从那里获取索引。我想我得到了their demo page的来源,以帮助我理解示例3和4.我使用示例3来帮助我理解如何查看其所有数据,因此我可以遍历项目,找到匹配的值,并抓住它的索引。然后示例4让我设置下拉项。对不起,我找不到我测试过的文件。

DdSlick看起来不错,但最后我和MsDropDown一起去了。我发现它更强大 - 它有助于它有一个SetIndexByValue函数。他们在github网站以及他们的演示网站上都有详细的文档。

答案 1 :(得分:1)

以编程方式选择ddslick下拉列表非常简单。

在您的json数据中选择Pass:true,您需要选择

var ddData = [
    {
        text: "Facebook",
        value: 1,
        selected: false,
        description: "Description with Facebook",
        imageSrc: "http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png"
    },
    {
        text: "Twitter",
        value: 2,
        selected: true,
        description: "Description with Twitter",
        imageSrc: "http://dl.dropbox.com/u/40036711/Images/twitter-icon-32.png"
    }
];

我希望您理解这一点,即您创建json数据的位置只是将条件(如果数据库中的id与您为插件创建的数据中的id匹配的那样)选中:true else else selected:假 上面的代码将默认选择twitter。

希望这是有道理的。

答案 2 :(得分:1)

我在Github中看到了这个选项:

$('#myDropdown li:has(.dd-option-text:contains("MyValue"))').index();

或者如果文本不等于值:

 $('#myDropdown li:has(input[value="MyValue"])').index();

答案 3 :(得分:1)

丑陋但有效:

            var s = 0;
            var ind;
            $('#your_select .dd-option-value').each(function(i) {
                if ($(this).val() == your_value_to_test) {
                    ind = s;
                    return false;
                }
                s++;
            });

            $('#your_select').ddslick('select', {index: ind });

答案 4 :(得分:0)

您还可以在格式化下拉列表之前强制选择所选项 在调用.ddslick()之前,只需在你的选择中选择一个像这样的选项

    $("#demoSetSelected  option[value='YOURVALUE']").attr('selected', 'selected');

然后:

    $("#demoSetSelected").dsslick();