2015-11-02 66 views
0

價值,我想改變jQuery的方法如何更改jQuery的方法取決於一個布爾

parent() 

children() 

根據用戶的屏幕的寬度。

這裏是我有(相關代碼片段):

var me   = $(this); 
var generation = $(window).width() > 767 ? 'parent' : 'children'; 
if(!me.is(e.target) && !me.is($(e.target)[generation]()) { 
    me.removeClass(activeClass); 
} 

這是什麼都不做,無論屏幕大小也心不是拋出一個錯誤...

如果我登錄變量 代 到控制檯事件正確的字符串根據屏幕大小檢查返回,所以我必須搞砸方法正在寫入的方式。

任何人都有洞察力嗎?

+0

如果這段代碼存在嗎?如果它在事件處理程序中,則'this'與'e.target'相同,所以'!me.is(e.target)'永遠不會是錯誤的。 – Barmar

回答

2

的問題可能是你缺少一個)

[1]嘗試:

var me   = $(this); 
var generation = $(window).width() > 767 ? 'parent' : 'children'; 
if (!me.is(e.target) && !me.is(($(e.target)[generation])())) { 
    me.removeClass(activeClass); 
} 

[2]或爲什麼不這樣做:

var me   = $(this); 
var generation = $(window).width() > 767; 
if (!me.is(e.target) && ((generation == true && !me.is($(e.target).parent())) || (generation == false && !me.is($(e.target).children())))) { 
    me.removeClass(activeClass); 
} 

[3]或本:

var me = $(this); 
if ($(window).width() > 767 && !me.is(e.target) && !me.is($(e.target).parent())) { 
    me.removeClass(activeClass); 
} else if (!me.is(e.target) && !me.is($(e.target).children())) { 
    me.removeClass(activeClass); 
} 

[4]或這樣的:

var me = $(this); 
var check = $(window).width() > 767 ? $(e.target).parent() : $(e.target).children(); 
if (!me.is(e.target) && !me.is(check)) { 
    me.removeClass(activeClass); 
} 
+0

我只是輸錯了,但很好趕 – HelloWorld

+0

你試過我的第二個或我的第三個代碼片段嗎? –

+0

嘿你的第二個片段似乎工作,所以我會在第二秒接受,但我可以自己解決這個問題:var generation = $(window).width()> 767? $(e.target).parent():$(e.target).children(); – HelloWorld

0

爲什麼不能簡單地用:

$(window).width() > 767 ? parent() : children(); 
+0

早些時候嘗試過 - 返回未定義,但重新訪問,只是給我一個想法... – HelloWorld

+0

它會返回函數parent()/ children()返回的任何函數,根據你需要修改它們? –

+0

'parent'和'children'不是全局函數,它們是jQuery方法。 – Barmar

相關問題