我可以用较短的jQuery脚本选择三个ID吗?

时间:2014-08-17 20:15:17

标签: jquery

我相信从下拉列表中选择这三个ID有更好的方法(ID 115,116和117):

jQuery(document).ready(function($) {
    var usedNames = {};
    $("select[name='item_meta[115]'] > option").each(function () {
        if(usedNames[this.text]) {
            $(this).remove();
        } else {
            usedNames[this.text] = this.value;
        }
    });

    var usedNames = {};
    $("select[name='item_meta[116]'] > option").each(function () {
        if(usedNames[this.text]) {
            $(this).remove();
        } else {
            usedNames[this.text] = this.value;
        }
    });

    var usedNames = {};
    $("select[name='item_meta[117]'] > option").each(function () {
        if(usedNames[this.text]) {
            $(this).remove();
        } else {
            usedNames[this.text] = this.value;
        }
    });
});

我可以缩短此代码,并在第一个变量下选择所有ID吗?

3 个答案:

答案 0 :(得分:0)

$("select[name='item_meta[116]'] > option")
    .add("select[name='item_meta[117]'] > option")
    .add("select[name='item_meta[118]'] > option")
    ...

或者

var selector = "select[name='item_meta[116]'] > option"
selector += ",select[name='item_meta[117]'] > option"
selector += ",select[name='item_meta[118]'] > option";

$(selector)
    ...

答案 1 :(得分:0)

var usedNames = {},
    pattern = 'select[name="item_meta[<ID>]"] > option', // Create a string pattern for the selector
    IDs = [115, 116, 117, 121], // Get your arbitrary list of ID's
    selectors = IDs.map(pattern, function (ID) { return pattern.replace('<ID>', ID) }), // return an array of string selectors
    elems = $(selectors.join(',')); // query for all of them

$.each( elems, function () {

    if(usedNames[this.text]) {

        $(this).remove();

    } else {

        usedNames[this.text] = this.value;

    }

});

答案 2 :(得分:0)

您可以使用Attribute Starts With Selector

$("select[name^='item_meta'] > option")