2012-03-04 85 views
0

我有以下HTML/jQuery腳本的問題。點擊完成與jQuery工作正常

<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
<script type="text/javascript"> 
    var count = 1; 
    $(function(){ 
     $('#add').click(function(){ 
      count++; 
      $('#container').append(count + '° posto: '+ '<input type="text" id="item_' + count + '" name="items[]" type="text" /><input type="submit" name="del" id="del" value="Elimina" /><br />'); 
      return false; 
     }); 
     $('#del').click(function(){ 
      alert('prova'); 
      return false; 
     }); 
    }); 
</script> 

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 
    <span>1° posto:</span><input type="text" id="item_1" name="items[]" maxlength=<?php echo $psw_length[1]; ?> /> 
    <input type="submit" name="del" id="del" value="Elimina" /><br /> 
    <div id="container"></div> 
    <input type="submit" name="add" id="add" value="Aggiungi" /><br /> 

    <input type="submit" name="submit" value="Avanti >" /> 
</form> 

如果我點擊第一個「Elimina」按鈕,出現警報,但如果我點擊第二個,第三個,第四個,等不會發生任何事情。

有人可以幫我嗎?謝謝!

+2

ID必須是唯一的。 – SLaks 2012-03-04 17:09:19

+0

發佈您生成的HTML。 – j08691 2012-03-04 17:11:44

+0

或者你應該使用類,而不是像我在下面的答案中所示。 – Sarfraz 2012-03-04 17:16:55

回答

3

因爲你的元素被動態地添加,你需要使用on處理程序。

注:你加入相同del這是不正確的id。對於每個元素,id應該是唯一的。

爲了解決它,你可以使用一個代替:

class="del" 

,然後使用此代碼on處理程序動態元素:

$('form').on('click', '.del', function(){ 
     alert('prova'); 
     return false; 
}); 
+1

第一個按鈕不在'#容器中。將活動附加到「form」! – Alex 2012-03-04 17:28:51

+0

@Alex:感謝您的注意。更新 – Sarfraz 2012-03-04 17:33:14

+0

太棒了!謝謝!! – Floppy88 2012-03-05 14:44:30

-1

對動態創建的控件使用jquery 事件。 不要使用它過時!

<script type="text/javascript" src="jquery-1.7.1.min.js"></script> 
<script type="text/javascript"> 
    var count = 1; 
    $(function(){ 
     $('#add').on('click', function(){ 
      count++; 
      $('#container').append(count + '° posto: '+ '<input type="text" id="item_' + count + '" name="items[]" type="text" /><input type="submit" name="del" id="del" value="Elimina" /><br />'); 
      return false; 
     }); 
     $('#del').on('click', function(){ 
      alert('prova'); 
      return false; 
     }); 
    }); 
</script> 

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post"> 
    <span>1° posto:</span><input type="text" id="item_1" name="items[]" maxlength=<?php echo $psw_length[1]; ?> /> 
    <input type="submit" name="del" id="del" value="Elimina" /><br /> 
    <div id="container"></div> 
    <input type="submit" name="add" id="add" value="Aggiungi" /><br /> 

    <input type="submit" name="submit" value="Avanti >" /> 
</form>**strong text** 
+0

您的代碼不會生成委託事件!您缺少選擇器參數... – gdoron 2012-03-04 17:17:57

1

夫婦東西:
id必須是唯一 !!!。改變從id選擇到name選擇

您需要使用委託的事件像ondelegatelive是不建議使用)。

$('#add').click(function(){ 
      count++; 
      $('#container').append(count + '° posto: ' + 
       '<input type="text" id="item_' + count + 
       '" name="items[]" type="text" /> ' + 
       '<input type="submit" name="del" value="Elimina" /><br />'); 
       // ===> Not duplicating the del id!!! 
      return false; 
     }); 
$('form').on('click', 'input[name="del"]', function(){ // <== delegate event. 
      alert('prova'); 
      return false; 
     });