1

私は最新の jQuery を使用していますが、これ.live()は非推奨であり、.on()代わりに使用する必要があります。クリックイベントをボタンに付けるのに問題があります。ボタンの値を動的に変更し、2 つのケースを処理できるはずです

<input type="text" ><input id="button_1" type="button" value="add" >
<input type="text"> <input id="button_2" type="button" value="add">

$('[id^="button_"]').on("click", "input", function() {
    $(this).val("delete");
    
    $('#button_'+$(this).attr('id').split('_')[1]).attr('id', 'delButton_'+$(this).attr('id').split[1]);
                                                     
});

$('[id^="delButton_"]').on("click", "input", function() {
    $(this).val("add");
    
    $('#delButton_'+$(this).attr('id').split('_')[1]).attr('id', 'button_'+$(this).attr('id').split[1]);
    
});

これはデモです:jsfiddle

4

2 に答える 2

6

イベントは祖先要素にのみ委任できますが、兄弟に委任しようとしています。(実際、あなたが何をしているのかわかりません!)

したがって、マークアップが

<div class="buttonContainer">
    <input type="text" ><input id="button_1" type="button" value="add" >
</div>

あなたが使用することができます

$('.buttonContainer').on("click", "input", function() {
    // here, "this" will be the clicked input
});

上記は、テキスト入力とボタンの両方のクリックを親 div に委任します。いずれかの要素をクリックすると、関数がトリガーされます。

ボタンのみをターゲットにしたい場合は、渡されたセレクターを次のように変更します.on

$('.buttonContainer').on("click", '[id^="button_"]', function() {
    // here, "this" will be the clicked button
});
于 2013-03-19T21:31:11.367 に答える
1

同等のもの:

$('[id^="button_"]').live("click", function() {

は:

$(document).on("click", '[id^="button_"]', function() {

ただし、より近い祖先を使用できる場合は$(document)、そうする必要があります。

于 2013-03-19T21:35:31.833 に答える