2012-03-08 17 views
0

私はそれを実現させるためにすべてを行いましたが、成功することはありませんでした。jQueryのバインドイベントがまったく機能しません

問題は、私は次のコードのような要素に関数を結合し、その後、実行時に要素を作成することです:私は以下のようなラベルを持っているHTMLコードで

$(document).ready(function() { 

    $('.rem').click(function() { 
    $("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>'); 
    }); 

    $('#runtime').bind('click', func_name()); 

}); 

//End of doc 
function func_name() { 
    alert('I got it!'); 
} 

<div id="body"> 
    <label class="rem">click me</label> 
</div> 

私の第二の試み

$(document).ready(function() { 

    $('.rem').click(function() { 
    $("body").append('<a id="runtime" href="javascript:void(0);">runtime</a>'); 
    }); 

    $('#runtime').bind('click',function() { 
    alert($(this).text()); 
    }); 

}); 
//End of doc 

HTMLコード:

<div id="body"> 
    <label class="rem">click me</label> 
</div> 

答えて

3

変更

$('#runtime').live('click',func_name); 

または(jQueryの1.7のような)に

$('#runtime').bind('click',func_name()); 

:注意すべき

$('#runtime').on('click',func_name); 

2つのこと:

  1. 私が変更func_name()~func_nameを呼びたくない場合は、ハンドラをバインドするときに関数を呼び出すことができます。単に参照するだけです。
  2. を呼び出すと、.remをクリックするまで#runtimeが存在しないため、何も問題ありません。そのため、liveまたはonのいずれかが必要です(jQueryのバージョンによって異なる)。

とにかくjQuery.onを使用する必要がある理由については、here'sを参考にしてください。

+0

私はjQuery 1.7.1を使用しています。感謝していますが、.on()は機能しませんでした。 – ALH

3

あなたはコード内の点で機能を実行したいので、()を削除しないでください:

$('#runtime').bind('click', func_name); 

あなたがが、jQueryの1.7以降を使用している場合は、あなたがすべき.on()を使用して、次のいずれか

$('#runtime').on('click', func_name); 

または直接.click()ハンドラを使用します。

$('#runtime').click(func_name); 
+0

jQuery 1.7.1.min.jsを使用していますが、.on()メソッドが機能しませんでした(関数から削除しました) – ALH

+0

.click()はうまく機能しません。ランタイム、私はそれにイベントをバインドする必要があります! – ALH

0

は、それが作成されている前に、オブジェクトを結合しているので、あなたが希望する結果を取得されていません。この

$(document).ready(function(){ 

    $('.rem').click(function(){ 
     $('<a id="runtime" href="javascript:void(0);">runtime</a>').bind('click',func_name).appendTo("body"); 
    }); 
});//End of doc 
function func_name(){ 
    alert('I got it!'); 
} 

を試してみてください。

関連する問題