次のようにクリックイベントを追加しました。ターゲットに特定の親があるかどうかを確認したいと思います。
$(document).click(function(event){
// Check here if target has specific parent for example -> #parent
});
これはどのように行うことができますか?
次のようにクリックイベントを追加しました。ターゲットに特定の親があるかどうかを確認したいと思います。
$(document).click(function(event){
// Check here if target has specific parent for example -> #parent
});
これはどのように行うことができますか?
このための.parent() domトラバーサルメソッドがあります。
Pointyの水晶玉によると、おそらく次のようなことをしたいと思うでしょう。
$(document).click(function(event) {
if ($(event.target).parents('.selector').length > 0) {
}
});
なぜドキュメントにクリックハンドラーを設定しているのかわかりません。おそらくイベントの委任と.on()を探していますか?
これも機能すると思います。AFAIKjQueryイベントは、イベントを呼び出すときにjQueryオブジェクトの代わりにリテラル要素を使用します。基本的this
には、通常のJavaScriptプロパティを持つ通常のDOM要素である必要があります。
$(document).click(function(event)
{
let myparent = $(this.parentNode); //jquery obj
let parent = $(this.parentNode)[0]; //plain DOM obj
let myself = $(this); //jquery obj;
let $elf = this; //plain DOM obj
});
注:変数として「self」を使用することは悪い/特定のライブラリとの競合を引き起こすことがあるので、$elfを使用しました。$elfの$は特別ではありません。jQueryの規則などではありません。
私は過去にこれを確実に使用しました:
var target = $( event.target )
これにより、イベントが呼び出された要素のjQueryオブジェクトへの参照が提供されます。これと同じアプローチを使用して、親が「#parent」であるかどうかを確認できます。次のようになります。
var target = $( event.target )
if (target.parent().attr('id') == "#parent") {
//do something
}
$(document).click(function(event){
var $parent = $(this).parent();
// test parent examples
if($parent.hasClass('someclass')) { // do something }
if($parent.prop('id') == 'someid')) { // do something }
// or checking if this is a decendant of any parent
var $closest = $(this).closest('someclass');
if($closest.length > 0 ) { // do something }
$closest = $(this).closest('#someid');
if($closest.length > 0 ) { // do something }
});