2016-10-07 3 views
1

사용자가 그냥 여부를 기록하든, HTML은 그렇게 생성됩니다실행 콜백 함수 요소가 존재하는지 여부를

<body> 
    <div id="welcomemessage"> 
    <div id="content> 
</body> 

사용자는 단지 로그인하지 않았다

사용자는 로그인 :

<body> 
    <div id="content> 
</body> 

JQuery와 코드 :

$("div#welcomemessage").fadeIn(500,function(){ 
    //COMPLEX CODE 
}) 
,

내부 코드가 복잡하기 때문에 두 번 쓰고 싶지 않습니다. if 문없이이 코드를 실행할 수있는 방법이 있습니까?

+0

을한다면? 물론 :'$ ("div # welcomemessage"). 길이 || $ ("div # welcomemessage") .fadeIn (...)'-하지만 아마도 당신이 원하는 바가 아닐 것입니다.) – m02ph3u5

답변

0

당신은 함수에서 복잡한 코드를 작성 만 함수 호출 반복 수 :

var runComplexCode = function() { 
    //COMPLEX CODE 
}; 

if (/* exists element */) { 
    $("div#welcomemessage").fadeIn(500, runComplexCode); 
} else { 
    runComplexCode(); 
} 
+0

죄송합니다. #welcome_message가 있으면 코드의 일부도 달라집니다. –

+0

나는 자체 함수로 변수를 전달하고 변수를 전달했다. 그것은 단지 잘못 코딩 된 것처럼 보입니다. 도와 줘서 고마워! –

0

왜 그냥 자신의 함수에서 논리를 포장을?

당신은 당신이 모든 일을 promisify하고 불필요한 복잡성을 도입 할 수 미친 경우 :이 실제로 사용하지 마십시오 작동하는 동안

function $if(e) { 
    $e = $(e) 
    if($e.length) return Promise.resolve($e) 
    return Promise.reject(e) 
} 

$if('#welcomemessage') 
    .then(e => e.fadeIn(500, ...)) 
    .catch(/* do something else */) 

합니다. 필요한 것보다 더 복잡한 것을 만들지 마십시오. (이 접근법에서 실제 사용법을 볼 수 없다면)

+0

죄송합니다. #welcome_message가 존재하는 경우 코드의 일부도 달라집니다. –

+0

나는 자체 함수로 변수를 전달하고 변수를 전달했다. 그것은 단지 잘못 코딩 된 것처럼 보입니다. 도와 줘서 고마워! –

0

이것을 달성하는 가장 간단한 방법은 복잡한 논리를 자체 함수로 추출하는 것입니다. 그런 다음 if 문 (또는 아래의 3 진 표현식)을 사용하여 #welcomemessage 요소가 DOM에 있는지 여부에 따라 논리 흐름을 지시 할 수 있습니다. 이 시도 :없이

var foo = function() { 
 
    console.log('complex code here...'); 
 
} 
 

 
var $welcome = $('#welcomemessage'); 
 
$welcome.length ? $welcome.fadeIn(500, foo) : foo();
#welcomemessage { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="welcomemessage">Welcome!</div>

+0

나는 자체 함수로 변수를 전달하고 변수를 전달했다. 그것은 단지 잘못 코딩 된 것처럼 보입니다. 도와 줘서 고마워! –

관련 문제