0

私はここにjsfiddleを持っています-http ://jsfiddle.net/9kKXX/20/

私のjQuery関数

$(function() {
    $('form input[type="text"]').live('keyup', function() {
        var val = $.trim(this.value);
        $('form .create-playlist-button').prop('disabled', val.length == 0).click(function(){
            alert('ALERT TITLE HERE');
          });
    });
});​

要件

  • ドロップダウンをクリック->テキストを入力->作成
    を押すタイトル、ビューなどの対応するフォーム要素を選択したい。これは現在発生していません。

  • [作成]をクリックすると、何度もアラートが表示され続けますが、どうすればそれを回避できますか?

私はjQueryに非常に慣れておらず、いくつかの場所を読んでいますが、解決策が見つかりませんでした

ありがとうございました

更新
------------

ジェフによる回答はフィドルで機能しますが、それをコードに入れると、クリックしても何も起こりません。コードサンプル全体をこのフィドルに入れました-http://jsfiddle.net/rDe9V/ 、ここで何が間違っているのかを理解するのを手伝ってください

4

2 に答える 2

1

ここでいくつかのことが起こっています。これが最後のフィドルです。

まず、キーアップイベントが発生するたびにクリックイベントをバインドしています。つまり、アラートは、プレイリスト タイトルのすべての文字に対して少なくとも 1 回発生します。ドキュメントの準備ができている場合でも、クリックをバインドする必要があります。

$(function() {
    $('form input[type="text"]').live('keyup', function() {
        var val = $.trim(this.value);
        $('form .create-playlist-button').prop('disabled', val.length == 0)
    });
    $('form .create-playlist-button').click(function(){
        alert('ALERT TITLE HERE');
    });
});​

第二に、重複した ID を使用しています。ページには多くの要素があります

<div id="video-detail">

ID は一意である必要があります。代わりにこれらをクラスに変更する必要があります。

<div class="video-detail">

3 番目に、クリックされたボタンとタイトルの間の共通の祖先まで DOM ツリーを上に移動し、タイトルまで下に移動することで、タイトルにアクセスできます。ID をクラスに変更すると仮定すると、次のようになります。

$('form .create-playlist-button').click(function(e){
    var title = $(e.target).closest('.video-detail').find('.title').text();
    alert(title);
});

my fiddle にアクセスして、最終製品を確認できます。

于 2012-07-10T13:44:13.877 に答える
0

私の評判のためにコメントを投稿することはできませんが、新しい問題は、あなたがclassではなく を検索していることですid

あなたのコード:

$('.item').live('click', function(){
    // alert(this.id);
    var url = $('#video-frame').attr('src');
    var new_url = url.replace(/embed\/[\w -]*/g, 'embed/' + this.id);
    $('#video-frame').attr('src', new_url);
});

正しいコード (最初の行):

$('#item').live('click', function(){
    // alert(this.id);
    var url = $('#video-frame').attr('src');
    var new_url = url.replace(/embed\/[\w -]*/g, 'embed/' + this.id);
    $('#video-frame').attr('src', new_url);
});
于 2012-07-10T15:15:55.497 に答える