0

所以我试图通过javascript(主要是为了优雅的降级目的)等在我的文档的某个部分中将一些代码附加到我的所有图像(用于翻转)等等

在注意到我的功能不起作用之后……我写了一个超小的功能来测试它,但没有用。在这个例子中,我试图做的是提醒一个图像 alt 标签,而不是一个特定的按钮 div。本质上,将所述功能应用于父 div (portSecW) 中的所有图像,而不是关闭按钮图像/div。

所以为了这个例子,这里有一些 HTML(伪):

<div id="portSecW">
  <img src="X" alt="something here"></img>
  <img src="a" alt="something here"></img>
  <img src="b" alt="something here"></img>
  <div class="closeXbtn"><img src="g" alt="something here"></img></div>
</div>

这是我尝试过的。

$('#portSecW img:not(".closeXbtn")').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

我也这样做了

$('#portSecW img').not('.closeXbtn').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

我也尝试过这样但不起作用(所以我假设虽然我没有收到错误,但它没有正确构造,因为警报功能不会触发。)

$('#portSecW img.not(".closeXbtn")').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

所以不确定我做错了什么。

提前致谢。

注意:以防万一有人在看,标记的“接受的答案”对我有用,但在进一步挖掘后。我上面的所有尝试都有效,问题是我对遍历 DOM 的方式不够精确。所以所有这些都是同样的事情和工作。这是我所做的更改,再次,这些都有效。

$('#portSecW a').children('img').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

$('#portSecW img').not(".closeXbtn img").click(function(){
    alert($(this).attr("alt")); 
    return false;
});

$('#portSecW img:not(".closeXbtn img")').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

谢谢大家的帮助

4

5 回答 5

1

尝试删除类周围的引号,例如:

$('#portSecW img:not(.closeXbtn)').click(function(){
  alert($(this).attr("alt")); 
  return false;
});

如果失败,您可以执行以下操作:

$('#portSecW img').click(function(){
  if($(this).hasClass('closeXbtn')))  { /* do something */ }
});
于 2012-09-10T10:04:57.323 回答
1

使用.children()

$('#portSecW').children('img').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

.children()方法允许我们在 DOM 树中搜索这些元素的子元素,并从匹配的元素中构造一个新的 jQuery 对象。

.children()方法的不同之处.find()在于.children() 它只沿着 DOM 树向下移动一层

于 2012-09-10T10:11:42.093 回答
0

试试这个:

$('#portSecW img').not(".closeXbtn img").click(function(){
    alert($(this).attr("alt")); 
    return false;
});

或者

$('#portSecW > img').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

第二个更准确。这会将点击事件绑定到portSecW.

于 2012-09-10T10:08:45.127 回答
0

也许这可以帮助你:

$('#portSecW > img').click(function(){
    alert($(this).attr("alt")); 
    return false;
});

...它只会选择主 div 的直接 IMG 后代,省略 closeXbtn div 中的那个。

但是,如果您需要保留功能,也许这可能会更好用:

$('#portSecW img:not(:parent(.closeXbtn))').click(function(){
    alert($(this).attr("alt")); 
    return false;
});
于 2012-09-10T10:09:02.013 回答
0

删除您的“不”并简单地编辑它

$('#portSecW img').click(function(){
  if($(this).hasClass('closeXbtn'))
    //Do some play
})
于 2012-09-10T10:10:31.887 回答