Javascript 为什么不是';这段代码是否将click事件绑定到a标记?

Javascript 为什么不是';这段代码是否将click事件绑定到a标记?,javascript,jquery,onclick,Javascript,Jquery,Onclick,我有这个HTML: <div class="osoba listItem podrucjaDjelovanja" id="listItem1" style='display:block'> <h3>..</h3> <p>...</p> <p>...</p> <p>...</p> <p>Areas of practice: <a href=

我有这个HTML:

<div class="osoba listItem podrucjaDjelovanja" id="listItem1"  style='display:block'>
  <h3>..</h3>
  <p>...</p>
  <p>...</p>
  <p>...</p>
  <p>Areas of practice:  
    <a href="/en/aktivnosti/#listItem1A">general legal support</a>, 
    <a href="/en/aktivnosti/#listItem2A">conciliation</a>, 
    <a href="/en/aktivnosti/#listItem4A">civil and commercial contracts </a>, 
    <a href="/en/aktivnosti/#listItem8A">property management</a>
  </p>
</div>
除了这一个(最后一个),它对所有情况都很有效。单击链接时,此绑定将被忽略。我不确定我可能做错了什么


编辑:感谢您的回复,我想如果我让您指向页面,然后复制粘贴大量代码会更容易。基本上,页面是,侦听器是在ajax.js第36行中定义的。

错误在您显示的代码之外

它与您的问题中的代码配合得很好:


也许这里有一些无效的标记,使得元素最终与您所想的不同。

JQuery中的代码准备好了吗

这对我来说很好:

$(function(){
 $('.navLeft .menu-item a, #upper-header a, #logo, .podrucjaDjelovanja p a')
    .on('click',   function(event) {
      console.log($(this));
      return false;
 });
});
请参见此处:

Run
console.log($('.navLeft.menu item a,#上标题a,#logo,.podrucjaDjelovanja p a')以确保您正在选择您认为是的元素

据我所知,您发布的代码似乎没有任何问题。我会去别处看看。首先验证您的代码,并确保已修复任何语法或结构错误


另外,您是否考虑过您正在单击的对象前面可能有一个元素?例如,覆盖另一个元素的空部分。使用DOM检查器进行检查。

我认为问题在于如何调用
.on
函数。在jQuery1.7之前,它们对
.bind
.delegate
.live
有单独的方法。但是随着jQuery1.7的出现,这些方法被弃用,因为它们都包含在1方法
.on
中,从而简化了事情。但是由于文档不太清楚,人们不理解
方法上的
.on
提供了上述3种不推荐使用的方法的功能,但这取决于您如何使用
.on
方法。以下是一个例子:

// Bind
$( ".podrucjaDjelovanja p a" ).on( "click", function( e ) {} ); 

// Live
$( document ).on( "click", ".podrucjaDjelovanja p a", function( e ) {} );

// Delegate
$( ".podrucjaDjelovanja" ).on( "click", "p a", function( e ) {} );
我的猜测是,在调用
.on
之后,将声明不起作用的锚定标记的标记。在这种情况下,您将必须在
上实现对live events的
。因此,您需要更改的只是调用
on
的方式

$(document).on( "click", ".navLeft .menu-item a, #upper-header a, #logo, .podrucjaDjelovanja p a", function( event ) {
    alert("Clicked");
});

希望这有帮助。

在ajax.js的第123行中,您将替换以下内容:

$('#container').html(json.content)


当然,新元素没有附加处理程序。您要么必须将处理程序绑定到新元素,要么首先将其绑定到祖先元素。

是否调试了选择器?它选择元素了吗?你说的“绑定被忽略”是什么意思?你在处理程序中做什么?我们需要更多的代码。
.podrucjaDjelovanja
中的链接是使用ajax动态生成的吗?绑定被忽略意味着当我单击链接并尝试调试第一行(event.preventedafolt())时,第一行不会被调用,当我使用Chrome inspector检查代码时,它们上没有任何绑定。尝试此操作后,元素被选中。正如我所说,在第一次调用时没有ajax调用,因此应该附加处理程序。是的,有。因为在main.js中第93行的onload处理程序中,您可以找到以下语句:
firstVisit=false
// Bind
$( ".podrucjaDjelovanja p a" ).on( "click", function( e ) {} ); 

// Live
$( document ).on( "click", ".podrucjaDjelovanja p a", function( e ) {} );

// Delegate
$( ".podrucjaDjelovanja" ).on( "click", "p a", function( e ) {} );
$(document).on( "click", ".navLeft .menu-item a, #upper-header a, #logo, .podrucjaDjelovanja p a", function( event ) {
    alert("Clicked");
});