2

我有这个 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>

我正在尝试将 onClick 事件绑定到 a 标签。我正在使用这个电话:

$('.navLeft .menu-item a, #upper-header a, #logo, .podrucjaDjelovanja p a').on('click', function(event) {

除了这个(最后一个)之外,它适用于所有情况。当我单击链接时,此绑定将被忽略。我不确定我做错了什么。

编辑:感谢您的回复,我认为如果我将您指向该页面然后复制粘贴大量代码会更容易。基本上,该页面是http://skrobotwp.gandzo.com/en/zaposlenici/并且侦听器在 ajax.js 第 36 行中定义。

4

5 回答 5

1

好吧,我认为问题在于您如何调用该.on函数。在 jQuery 1.7 之前,他们对.bind,.delegate.live. 但是随着 jQuery 1.7 的到来,这些方法被弃用以通过将它们全部包含在 1 方法下来简化事情.on。但由于文档不那么清晰,人们不理解该.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我的猜测是,在您致电后,将声明不起作用的锚标记的标记。在这种情况下,您将不得不.on为现场活动实施 as done。因此,您需要更改的只是调用方式.on

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

希望这可以帮助。

于 2013-03-10T18:08:30.833 回答
0

该错误位于您显示的代码之外。

它适用于您问题中的代码:http: //jsfiddle.net/p4DRg/

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

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

于 2013-03-10T17:05:25.107 回答
0

你的代码在JQuery ready吗?

这对我来说很好:

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

见这里:http: //jsfiddle.net/fvDX8/

于 2013-03-10T17:06:54.387 回答
0

运行console.log($('.navLeft .menu-item a, #upper-header a, #logo, .podrucjaDjelovanja p a'));以确保您正在选择您认为的元素。

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

另外,你有没有考虑过你点击的东西前面可能有一个元素?例如,覆盖另一个元素的空白部分。使用 DOM 检查器进行检查。

于 2013-03-10T17:07:11.950 回答
0

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

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

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

于 2013-03-10T18:14:48.537 回答