[JQUERY] jQuery를위한 기능이 "존재"인가?
JQUERYjQuery를위한 기능이 "존재"인가?
해결법
-
1.자바 스크립트에서는 모든 것이 'truthy'또는 'falsy'0 수단 거짓 번호, 다른 모든 사실입니다. 당신이 쓸 수 있도록 :
자바 스크립트에서는 모든 것이 'truthy'또는 'falsy'0 수단 거짓 번호, 다른 모든 사실입니다. 당신이 쓸 수 있도록 :
if ($(selector).length)
당신은> 0 부분이 필요하지 않습니다.
-
2.예!
예!
jQuery.fn.exists = function(){ return this.length > 0; } if ($(selector).exists()) { // Do something }
제프 앳 우드와 방목 코드 팟 캐스트 :이 응답에
-
3.당신이 사용하는 경우
당신이 사용하는 경우
jQuery.fn.exists = function(){return ($(this).length > 0);} if ($(selector).exists()) { }
당신은하지 않을 때 체인하는 것이 가능하다는 것을 의미한다.
이것은 더 좋을 것이다 :
jQuery.exists = function(selector) {return ($(selector).length > 0);} if ($.exists(selector)) { }
또한, 자주 묻는 질문에서 :
if ( $('#myDiv').length ) { /* Do something */ }
당신은 또한 다음을 사용할 수 있습니다. 더 값이 jQuery 오브젝트의 배열이없는 경우 배열의 첫 번째 항목이 정의되지 않은 반환 받고.
if ( $('#myDiv')[0] ) { /* Do something */ }
-
4.당신은이를 사용할 수 있습니다 :
당신은이를 사용할 수 있습니다 :
// if element exists if($('selector').length){ /* do something */ }
// if element does not exist if(!$('selector').length){ /* do something */ }
-
5.존재를 확인하는 가장 빠르고 가장 의미 자체 설명하는 방법은 일반 자바 스크립트를 사용하여 실제로 :
존재를 확인하는 가장 빠르고 가장 의미 자체 설명하는 방법은 일반 자바 스크립트를 사용하여 실제로 :
if (document.getElementById('element_id')) { // Do something }
네이티브 JS 방식이기 때문에 빠르게 jQuery를 길이 다른 것보다 쓰기,하지만이 실행에 조금 더 길다.
그리고 그것은 자신의 jQuery 함수를 작성의 대안보다 낫다. 그 대안은 @snover 언급 한 이유 느립니다. 그러나 그것은 또한 다른 프로그래머에게이 존재한다는 인상을 줄 것이다 () 함수는 jQuery를 고유 무언가이다. 자바 스크립트는 / 증가 된 지식 부채없이, 당신의 코드를 편집 다른 사람에 의해 이해되어야한다.
NB : 주목하라 element_id 전에 '#'의 부족 (이 일반 JS하지 jQuery를 때문에).
-
6.당신은 서면으로 몇 바이트를 저장할 수 있습니다 :
당신은 서면으로 몇 바이트를 저장할 수 있습니다 :
if ($(selector)[0]) { ... }
이 작품은 각각의 jQuery 객체는 가장 무도회는 배열로, 그래서 우리는 배열에서 첫 번째 항목을 얻을 수있는 배열 역 참조 연산자를 사용할 수 있기 때문이다. 지정된 인덱스에 항목이없는 경우는 undefined를 반환합니다.
-
7.당신이 사용할 수있는:
당신이 사용할 수있는:
if ($(selector).is('*')) { // Do something }
아마도 더 우아한 약간.
-
8.이 플러그인은 경우 ($ (ELE) .exist ()) {/ * DO WORK * /} 또는 사용하는 콜백처럼 if 문에서 사용할 수 있습니다.
이 플러그인은 경우 ($ (ELE) .exist ()) {/ * DO WORK * /} 또는 사용하는 콜백처럼 if 문에서 사용할 수 있습니다.
;;(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') { var exist = ele.length > 0 ? true : false; if (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 { if (ele.length <= 1) return ele.length > 0 ? true : false; else return ele.length; } return false; } }); $.fn.extend({ exist: function() { var args = [$(this)]; if (arguments.length) for (x in arguments) args.push(arguments[x]); return $.exist.apply($, args); } }); } })(jQuery);
jsFiddle
당신은 하나 또는 두 개의 콜백을 지정할 수 있습니다. 첫 번째 요소가 존재하는 경우 요소가 존재하지 않는 경우, 두 번째가 발광 발광합니다. 당신은 단지 하나 개의 함수를 통과하도록 선택할 경우,이 요소는 화재 존재 때. 선택된 요소가 존재하지 않는 경우에 따라서, 쇄 죽는다. 이 존재하는 경우 물론, 첫 번째 함수는 발사하고 체인이 계속됩니다.
콜백 변형을 사용하는 chainability을 유지하는 데 도움이 있다는 사실을 숙지 - 요소가 반환됩니다 그리고 당신은 다른 jQuery를 법으로 명령을 체인을 계속할 수 있습니다!
if ($.exist('#eleID')) { /* DO WORK */ } // param as STRING if ($.exist($('#eleID'))) { /* DO WORK */ } // param as jQuery OBJECT if ($('#eleID').exist()) { /* DO WORK */ } // enduced on jQuery OBJECT $.exist('#eleID', function() { // param is STRING && CALLBACK METHOD /* DO WORK */ /* This will ONLY fire if the element EXIST */ }, function() { // param is STRING && CALLBACK METHOD /* DO WORK */ /* This will ONLY fire if the element DOES NOT EXIST */ }) $('#eleID').exist(function() { // enduced on jQuery OBJECT with CALLBACK METHOD /* DO WORK */ /* This will ONLY fire if the element EXIST */ }) $.exist({ // param is OBJECT containing 2 key|value pairs: element = STRING, callback = METHOD element: '#eleID', callback: function() { /* DO WORK */ /* This will ONLY fire if the element EXIST */ } })
-
9.나는 모든 검사 기능을 프로토 타입 대신 함수에 숫자 패스, 그렇다면, 그들은, 그것은, 많은 경우에 OK가 아닌 100 % 상상할 수있는 요소의 길이를 확인 여기에 대한 답변의 대부분을 볼 그들이해야대로 정확하지 않습니다 그것이 있어야로 조건과 답을 반환 :
나는 모든 검사 기능을 프로토 타입 대신 함수에 숫자 패스, 그렇다면, 그들은, 그것은, 많은 경우에 OK가 아닌 100 % 상상할 수있는 요소의 길이를 확인 여기에 대한 답변의 대부분을 볼 그들이해야대로 정확하지 않습니다 그것이 있어야로 조건과 답을 반환 :
$.fn.exists = $.fn.exists || function() { return !!(this.length && (this[0] instanceof HTMLDocument || this[0] instanceof HTMLElement)); }
이 지금 당신이이 방법을 확인할 수, 길이, 유형을 모두 확인합니다 :
$(1980).exists(); //return false $([1,2,3]).exists(); //return false $({name: 'stackoverflow', url: 'http://www.stackoverflow.com'}).exists(); //return false $([{nodeName: 'foo'}]).exists() // returns false $('div').exists(); //return true $('.header').exists(); //return true $(document).exists(); //return true $('body').exists(); //return true
-
10.정말 jQuery를위한 필요가 없습니다. 일반 자바 스크립트로 그것은 쉽고 확인하는 의미 맞습니다 :
정말 jQuery를위한 필요가 없습니다. 일반 자바 스크립트로 그것은 쉽고 확인하는 의미 맞습니다 :
if(document.getElementById("myElement")) { //Do something... }
어떤 이유로 당신이 요소에 ID를 넣어하지 않으려면, 당신은 여전히 DOM에 액세스하기위한 다른 자바 스크립트 방법을 사용할 수 있습니다.
jQuery를 정말 멋진하지만, 망각에 순수 자바 스크립트 가을을 못하게 ...
-
11.당신은이를 사용할 수 있습니다 :
당신은이를 사용할 수 있습니다 :
jQuery.fn.extend({ exists: function() { return this.length } }); if($(selector).exists()){/*do something*/}
-
12.이전의 모든 답변의 이유는 .length 매개 변수들이 대부분 커튼 뒤에 querySelectorAll을 가지고 jQuery의 $ () 선택기를 사용하는 것입니다 필요 (또는 그들이 직접 사용). 그것은 그 선택에 대한 모든 경기를 찾고 그들과 배열을 채우는 전체 DOM 트리를 구문 분석해야하기 때문에이 방법은 다소 느립니다.
이전의 모든 답변의 이유는 .length 매개 변수들이 대부분 커튼 뒤에 querySelectorAll을 가지고 jQuery의 $ () 선택기를 사용하는 것입니다 필요 (또는 그들이 직접 사용). 그것은 그 선택에 대한 모든 경기를 찾고 그들과 배열을 채우는 전체 DOM 트리를 구문 분석해야하기 때문에이 방법은 다소 느립니다.
에서 [ '길이'] 매개 변수가 필요하거나 유용하고 찾을 수없는 경우는 먼저 일치 요소는 null을 반환하기 때문에 직접, 대신 document.querySelector (선택)를 사용하는 경우 코드는 훨씬 빨리 될 것입니다 없습니다.
function elementIfExists(selector){ //named this way on purpose, see below return document.querySelector(selector); } /* usage: */ var myelement = elementIfExists("#myid") || myfallbackelement;
그러나 실제 개체가 반환되는이 방법은 잎 우리를; 이는이 변수로 저장하고 (따라서 우리가 잊어 버린 경우 주변의 참조를 유지)를 반복해서 사용하지 않을 경우 괜찮습니다.
var myel=elementIfExists("#myid"); // now we are using a reference to the element which will linger after removal myel.getParentNode.removeChild(myel); console.log(elementIfExists("#myid")); /* null */ console.log(myel); /* giant table lingering around detached from document */ myel=null; /* now it can be garbage collected */
어떤 경우에는이 바람직 할 수있다. 그것은이 같은 for 루프에서 사용할 수 있습니다 :
/* locally scoped myel gets garbage collected even with the break; */ for (var myel; myel = elementIfExist(sel); myel.getParentNode.removeChild(myel)) if (myel == myblacklistedel) break;
실제로 요소를 필요로하지 않으며, 그것은 / 저장을 단지 참 / 거짓의를 얻기 위해 단지를 두 번하지합니다! 그것은 왜 매듭 여기, 비구 속성 와서 신발 작동?
function elementExists(selector){ return !!document.querySelector(selector); } /* usage: */ var hastables = elementExists("table"); /* will be true or false */ if (hastables){ /* insert css style sheet for our pretty tables */ } setTimeOut(function (){if (hastables && !elementExists("#mytablecss")) alert("bad table layouts");},3000);
-
13.당신이 원하는 $ .contains ()인가?
당신이 원하는 $ .contains ()인가?
-
14.($ (선택) .length는) {} 불충분하면 나는 발견했다. 선택은 빈 객체는 {} 일 때 그것은 자동으로 귀하의 응용 프로그램을 중단합니다.
($ (선택) .length는) {} 불충분하면 나는 발견했다. 선택은 빈 객체는 {} 일 때 그것은 자동으로 귀하의 응용 프로그램을 중단합니다.
var $target = $({}); console.log($target, $target.length); // Console output: // ------------------------------------- // [▼ Object ] 1 // ► __proto__: Object
내 유일한 제안은 {}에 대한 추가 검사를 수행하는 것입니다.
if ($.isEmptyObject(selector) || !$(selector).length) { throw new Error('Unable to work with the given selector.'); }
나는 아직도이 하나가 비트 무거운로하지만 더 나은 솔루션을 찾고 있어요.
편집 : 경고! 선택이 문자열 때 IE에서 작동하지 않습니다.
$.isEmptyObject('hello') // FALSE in Chrome and TRUE in IE
-
15.당신은 요소가 존재 또는 자바 스크립트에서 길이를 사용하지 않는 확인할 수 있습니다. 길이가 0보다 큰 다음 원소 인 경우 길이가 0 인 경우 다음 존재 요소는 존재하지
당신은 요소가 존재 또는 자바 스크립트에서 길이를 사용하지 않는 확인할 수 있습니다. 길이가 0보다 큰 다음 원소 인 경우 길이가 0 인 경우 다음 존재 요소는 존재하지
// These by Id if ($("#elementid").length > 0) { // Element is Present } else { // Element is not Present } // These by Class if ($(".elementClass").length > 0) { // Element is Present } else { // Element is not Present }
-
16.요소의 존재를 확인 공식 jQuery를 웹 사이트 자체에 깔끔하게 설명되어 있습니다!
요소의 존재를 확인 공식 jQuery를 웹 사이트 자체에 깔끔하게 설명되어 있습니다!
-
17.이 모든 응답과 매우 비슷하지만, 이유는 사용하지! 운영자는 두 번 그래서 당신은 부울을 얻을 수 있습니다 :
이 모든 응답과 매우 비슷하지만, 이유는 사용하지! 운영자는 두 번 그래서 당신은 부울을 얻을 수 있습니다 :
jQuery.fn.exists = function(){return !!this.length}; if ($(selector).exists()) { // the element exists, now what?... }
-
18.
$(selector).length && //Do something
-
19.DOM 요소에 대한 테스트를 시도
DOM 요소에 대한 테스트를 시도
if (!!$(selector)[0]) // do stuff
-
20.했는가의 대답에 영감을 나는 다음과 함께했다 :
했는가의 대답에 영감을 나는 다음과 함께했다 :
$.fn.exists = function() { return $.contains( document.documentElement, this[0] ); }
첫 번째는 두 번째를 포함하는지 여부 jQuery.contains 두 DOM 요소와 검사 걸린다.
첫 번째 인수로 document.documentElement를 사용하는 것은 우리가 현재 문서에서 요소의 존재를 확인에만 적용 할 때이 방법을 존재의 의미를 충족합니다.
다음, 나는 함께 $에있는 모두 반환 truthy 값 (4) $ 동안 (4) .exists 접근 .length $ (SEL)에 대해 jQuery.exists ()를 비교하는 조각 [0] $ (SEL)을 넣었습니다 ()는 false를 돌려줍니다. DOM에있는 요소의 존재를 확인하는 맥락에서이 목적하는 결과를 보인다.
$ .fn.exists = 함수 () { 리턴 $의 .contains (document.documentElement이 [0]); } VAR의 testFuncs = 함수 (JQ) {창 !! JQ [0]; }, 함수 (JQ) {창 jq.length!; }, 함수 (JQ) {복귀 jq.exists (); }, ]; VAR 입력 = [ "$ ()"$ ()], [ "$ (4)"$ (4)], [ "$ ( '#의 idoexist')"$ ( '#의 idoexist')], [ "$ ( '#의 idontexist')"$ ( '#의 idontexist')] ]; 위한 VAR (I 0, L = inputs.length, TR, 입력 =; I
" testFuncs + [0] (입력) + " TD> " testFuncs + [1] (입력) + " TD> " testFuncs + [2] (입력) + " TD> TR>"; $ ( "테이블") APPEND (TR).; } TD {국경 : 1 픽셀의 검은 색} <스크립트 SRC = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> script> # idoexist DIV> <표 스타일>입력 TD> $! (SEL) [0] TD> $! (SEL) .length TD> $ (SEL) .exists () TD> TR> 테이블> 'JQUERY' 카테고리의 다른 글
[JQUERY] 파일에서 실행중인 응용 프로그램에 의해 만들어진 요청에 대한 오류 "원점 널 (null)는 액세스 제어 - 허용 - 원산지에 의해 허용되지 않습니다": // URL (0) 2020.09.22 [JQUERY] 어떻게 자바 스크립트, JQuery와 - 아약스를 사용하여 <입력 유형 = '파일'>의 변화에 선택한 파일의 전체 경로를 얻으려면? (0) 2020.09.22 [JQUERY] 체크 박스가 jQuery를 체크 여부를 어떻게 확인합니까? (0) 2020.09.21 [JQUERY] 요소의 외부 HTML을 선택하기 (0) 2020.09.21 [JQUERY] 사용자가 외부에서 클릭 할 때 사용 jQuery를가 DIV를 숨기려면 (0) 2020.09.21