Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $.contains()方法的jQuery用法_Javascript_Jquery - Fatal编程技术网

Javascript $.contains()方法的jQuery用法

Javascript $.contains()方法的jQuery用法,javascript,jquery,Javascript,Jquery,一般来说,我对jquery和javascript非常陌生,我尝试使用td元素上的方法在表中单击时使图像出现和消失,但它似乎无法正常工作。这是示例代码 var td=document.getElementById('1'); td.addEventListener('click',function(){ var img=document.createElement('img'); img.src=https://via.placeholder.com/350x150“;//示例图像 如果($.c

一般来说,我对jquery和javascript非常陌生,我尝试使用td元素上的方法在表中单击时使图像出现和消失,但它似乎无法正常工作。这是示例代码

var td=document.getElementById('1');
td.addEventListener('click',function(){
var img=document.createElement('img');
img.src=https://via.placeholder.com/350x150“;//示例图像
如果($.contains(td,img)){
td.removeChild(img);
}否则{
td.儿童(img);
}
},假)
td{
高度:100px;
宽度:100px;
}

不要使用
contains()
,这对文本元素非常有用,您应该尝试:

if($('#1').find('img').length) { 
    // condition
}
或者,如果需要父元素的直接后代:

if ($('#1').find('> img').length) {
    // condition
}
以下版本不使用id选择器,而是检查单击元素的直接子代是否包含图像:

if($(this).find('> img').length) {
    // condition
}
您必须删除:

td.appendChild(img);
在img声明之后

您的代码创建、附加而不是删除图像


实际上,
if($.contains(td,img)){…}
总是返回true。

下面是代码的jQuery实现。 你想要实现的实际目标是什么?如果添加新的图像对象,则测试永远不会为真

也许你想知道牢房里是否有图像

var$td=$('单元1');
$td.on('click',function(){
var$img=$(“0){
$images.remove();
}否则{
$td.append($img);
}
});
td{
高度:100px;
宽度:100px;
}

检查一个元素是否是另一个元素的后代

$.contains( document.documentElement, document.body ); // true
$.contains( document.body, document.documentElement ); // false
我们还可以使用.contains选择包含以下内容的元素:

<html>
<head>
<script>
$(document).ready(function(){
    $("p:contains(is)").css("background-color", "yellow");
});
</script>

</head>
<body>

<h1>Welcome to My Homepage</h1>

<p class="intro">My name is Donald.</p>
<p>I live in Duckburg.</p>
<p>My best friend is Mickey.</p>
Who is Batman?
</body>
</html>

$(文档).ready(函数(){
$(“p:contains(is)”).css(“背景色”、“黄色”);
});
欢迎来到我的主页

我叫唐纳德

我住在达克伯格

我最好的朋友是米奇

谁是蝙蝠侠?
这将选择以下标记:

 <p class="intro">My name is Donald.</p>
 <p>My best friend is Mickey.</p>
我的名字叫唐纳德

我最好的朋友是米奇


1.不要以数字开头ID。2为什么不使用jQuery获取对象并分配事件处理程序?3.我不认为表中的img与您刚才创建的对象是同一个对象
if($(''.'1').find('img').length){//condition}
,或者如果您只需要直接后代:
if($('.'1').find('>img').length){//condition}
。您实际希望发生什么?您添加并立即删除元素,当前已编辑。我在真实页面上正确编写了该元素。这是我做的试验的一部分。我写这个问题太快了。无论如何,感谢您的建议。这正是我想要的。很抱歉,我的代码错误,它只是带有t的原始元素的快速副本rials。有没有用普通javascript编写此代码的方法?我在jquery中实现了这一点,它工作得很好。谢谢。我如何删除图像?如果
$(this).find('>img')。length
条件为true,我想删除图像,但
td.removeChild(img)
不起作用。任何仅使用js?Erhm的解决方案,目前时间很短,但请尝试
$(此项)。查找('>img').hide();
或为特定元素(本例中为图像)指定一个id
$('#idName').hide()
。然后,您可以在需要再次显示时执行
.show();