Javascript $.contains()方法的jQuery用法
一般来说,我对jquery和javascript非常陌生,我尝试使用td元素上的方法在表中单击时使图像出现和消失,但它似乎无法正常工作。这是示例代码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
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();
。