2

私はいくつかがに存在するかどうかを検出しようとします:

var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
alert(option);

しかし、そのようなオプションが存在しない場合、私はいずれにせよオブジェクトを受け取ります。何らかの値が存在するかどうかを検出するためのより良い方法は何ですか?

4

4 に答える 4

2

lengthjQueryオブジェクトのプロパティを使用できます。

jQueryオブジェクトの要素の数。

if (listBoxSelector.find("option[value="+value+"]").length) {
     alert('Exists')
}
于 2012-08-16T10:15:18.997 に答える
1

オブジェクトのlengthを確認します。option

var listBoxSelector = $("div#selectors select:eq(1)");
var option = listBoxSelector.find("option[value=" + value + "]:eq(0)");
if (option.length>0){
   alert(option);
}
于 2012-08-16T10:15:30.413 に答える
0
if(listBoxSelector.find("option[value=" + value + "]:eq(0)") == 0){
  //nothing found
}
于 2012-08-16T10:17:37.560 に答える
0

私はここで次のプラグインを使ってこの同じ質問に答えました。プラグインの作成の詳細については、回答をご覧ください。


次のプラグインを使用すると、要素が存在する場合にコールバック機能(jQueryスタイルのマークアップとインラインのまま)を使用できます。したがって、あなたの例では、次のようなことをするかもしれません:

listBoxSelector.exist(function() { // will ONLY fire if this element even exist
    alert($(this).find("option[value=" + value + "]:eq(0)"));
})

プラグイン

(function($) {
    if (!$.exist) {
        $.extend({
            exist: function() {
                var ele, cbmExist, cbmNotExist;
                if (arguments.length) {
                    for (x in arguments) {
                        switch (typeof arguments[x]) {
                            case 'function':
                                if (typeof cbmExist == "undefined") cbmExist = arguments[x];
                                else cbmNotExist = arguments[x];
                                break;
                            case 'object':
                                if (arguments[x] instanceof jQuery) ele = arguments[x];
                                else {
                                    var obj = arguments[x];
                                    for (y in obj) {
                                        if (typeof obj[y] == 'function') {
                                            if (typeof cbmExist == "undefined") cbmExist = obj[y];
                                            else cbmNotExist = obj[y];
                                        }
                                        if (typeof obj[y] == 'object' && obj[y] instanceof jQuery) ele = obj[y];
                                        if (typeof obj[y] == 'string') ele = $(obj[y]);
                                    }
                                }
                                break;
                            case 'string':
                                ele = $(arguments[x]);
                                break;
                        }
                    }
                }

                if (typeof cbmExist == 'function') {    //  has at least one Callback Method
                    var exist =  ele.length > 0 ? true : false; //  strict setting of boolean
                    if (exist) {    // Elements do exist
                        return ele.each(function(i) { cbmExist.apply(this, [exist, ele, i]); });
                    }
                    else if (typeof cbmNotExist == 'function') {
                        cbmNotExist.apply(ele, [exist, ele]);
                        return ele;
                    }
                    else {
                        if (ele.length <= 1) return ele.length > 0 ? true : false;
                        else return ele.length;
                    }
                }
                else {  //  has NO callback method, thus return if exist or not based on element existant length
                    if (ele.length <= 1) return ele.length > 0 ? true : false; //   strict return of boolean
                    else return ele.length; //  return actual length for how many of this element exist
                }

                return false; //    only hits if something errored!
            }
        });
        $.fn.extend({
            exist: function() {
                var args = [$(this)];
                if (arguments.length) for (x in arguments) args.push(arguments[x]);
                return $.exist.apply($, args);
            }
        });
    }
})(jQuery);

jsFiddle

于 2013-10-02T17:43:38.550 に答える