2013-09-26 41 views
0

我試圖使用.has()選擇器來只在我的身體有圖像時執行按鍵控件。使用.has()和關鍵事件

這就是我目前正在嘗試但它不工作。

if ($('body').has('img')){ 
    $(document).on('keyup', function (event) { 
    if (event.which === 37) { 
     console.log('test'); 
    } 
    }); 
} 
+0

是IE瀏覽器?如果是這樣,請將事件更改爲ev或其他內容,因爲事件是IE中的全局對象。 –

+0

'if($('img')。length)'更簡單。或者如果需要,可以使用「body img」。 –

+2

'.has()'返回一個jQuery對象,並且一個對象是JavaScript中的一個真值,讀取返回對象的'.length'屬性。 – undefined

回答

1

我寧願檢查,如果圖像是有使用平原選擇器:

if ($('img').length) { 
    $(document).on('keyup', function (event) { 
    if (event.which === 37) { 
     console.log('test'); 
    } 
    }); 
} 

這裏工作Fiddle

3

試試這個

if ($('body img').length) { 
} 
+0

爲什麼如果OP的'$('body')。('img')'沒有? – nnnnnn

+0

因爲'$('body')。has('img')'會返回數組元素或爲空,這將始終是真的 –

+0

是的,我有點希望提示你編輯這些信息到你的答案。 ..(雖然它不返回數組,但它返回一個jQuery對象。) – nnnnnn

0

如果它是確定註冊hanlder身體元件與圖像條件是動態的,然後

$(document).on('keyup', 'body:has(img)', function (event) { 
    if (event.which === 37) { 
     console.log('test'); 
    } 
}); 
0

爲什麼不:

$(document).on('keyup', 'body', function (event) { 
    if($(this).find('img').length) { 
     if (event.which === 37) { 
      console.log('test'); 
     } 
    } 
});