2012-03-01 28 views
0

)この機能をクリック機能に書き直す必要があります。まったく同じ機能を備えています。 私はjQuery on()をクリックして書き直します(

$('#citybreak_availability_calendar_widget').on('click', '#CB_SearchButton', function() { 
    var iframe = $('#citybreakContent').find('iframe'); 
    iframe.attr('src', $(this).attr('href')); 
    $('#menu ul li a[title="Boka rum"]').click(); 
    return false; 
}); 

jQueryの1.3を使用する必要がありますので、私は上の使用傾けるそして、これは私が得たものである:ここでは

$('#citybreak_availability_calendar_widget #CB_SearchButton').click(function() { 
    var iframe = $('#citybreakContent').find('iframe'); 
    iframe.attr('src', $('#CB_SearchButton').attr('href')); 
    $('#menu ul li a[title="Boka rum"]').click(); 
    return false; 
}); 
+1

それは動作しますか? –

+0

あなたは問題 –

+0

を指定できますか?なぜそれを行う必要がありますか?以前はうまくいかなかったのですか? – mindandmedia

答えて

1

$('#citybreak_availability_calendar_widget').click(function (e) { 
    if (e.target.id === 'CB_SearchButton') { 
     // your code 
    } 
}); 

あなたは「doesnのバージョン1.3を使用しているのでイベント委託をすぐに提供するためには、手動で実装する必要があります。考え方はクリックハンドラをラッパー要素にバインドし、ハンドラ内で - イベントターゲット(e.targetのプロパティ)が正しい要素であるかどうかを手動でチェックすることです。私は私が最終的に質問を理解だと思う

+0

私はそれを試しましたが、私はちょうどその代議員がv1.4に来て、1.3を使用しているのを見ました。 – Patrik

+0

@Patrikです。私は私の答えを更新しました... –

+0

それはうまくいくようです。ありがとうございましたŠime – Patrik

0

は、delagationのためにこれを打つ:あなたは.on()関数を使用して、イベントの委任を作っている

$('body').click(function(e) { 
    if (e.target.id === 'CB_SearchButton') { 
     var iframe = $('#citybreakContent').find('iframe'); 
     iframe.attr('src', $('#CB_SearchButton').attr('href')); 
     $('#menu ul li a[title="Boka rum"]').click(); 
     return false; 
    } 
}); 
+0

''#CB_SearchButton''はダイナミックな要素です(これは、ハンドラがOPのコードの祖先にバインドされている理由を説明します)。 –

2

jQuery documentationによると、これは.click()ではできません。これは.delegate()ではなく.bind()のショートカットです。

お使いのjQueryのバージョンが1.7より古いので、あなたが使用できない場合は、 delegate()を使用することができます

$('#citybreak_availability_calendar_widget').delegate('#CB_SearchButton', 'click', function() { 
    var iframe = $('#citybreakContent').find('iframe'); 
    iframe.attr('src', $(this).attr('href')); 
    $('#menu ul li a[title="Boka rum"]').click(); 
    return false; 
}); 
+0

delegate()はバージョン1.3以降に導入されました – charlietfl

0

私はjQueryのは、このような委譲メソッドを持っていた前に、これは

$('#CB_SearchButton').click(function() { 
    var iframe = $('#citybreakContent').find('iframe'); 
    iframe.attr('src', $('#citybreak_availability_calendar_widget').attr('href')); 
    $('#menu ul li a[title="Boka rum"]').click(); 
    return false; 
}); 
1

を助けることができると思いますlive()、delegate()、on()のようなコアのlivequeryプラグインは非常に利用されていました。メインのjQueryサイトではよく説明されています。あなたは役に立つかもしれません。http://docs.jquery.com/Plugins/livequery

関連する問題