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.bindjQuery 1.7 より前は、.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 に答える