2012-03-19 11 views
0

をクラスに基づいて関数を呼び出すと変更、私は次のコードを持っている:インナーIDS

$('.tagform').submit(function() { 
      $('#tagsubmit-???').toggle('1000'); 
      return false; 
}); 

をそして、私はクラスtagformと多くの<form>の要素を持っています。

<form class="tagform" id="tagform-1"> 
    <ul id="myTags-1"></ul> 
    <input type="submit" value="submit" id="tagsubmit-1" class="tagsubmit" />    
</form> 

<form class="tagform" id="tagform-2"> 
    <ul id="myTags-2"></ul> 
    <input type="submit" value="submit" id="tagsubmit-2" class="tagsubmit" />    
</form> 

私は何をしようとしているのかを理解するために疑問符を付けました。

submit()関数がidではなくクラスに基づいて呼び出された場合、どのフォームが送信されたかをどのように伝えることができますか?

答えて

0

提出されたフォームを知るには、$(this)を使用して要素を取得し、.attr()を使ってIDを取得します。

フォーム内のボタンを取得する必要がある場合は、入力タイプはこのように、送信されたフォームの下に提出選択することができます。

$('.tagform').submit(function() {    
     alert($(this).attr('id')); 

     $("input[type=submit]", $(this)).toggle(1000); // or $(".tagsubmit", $(this)).toggle(1000); 

     return false; 
}); 

あるいは.find使用:

$(this).find(".tagsubmit").toggle(1000): 

もっとインフォメーション:

Using $(this) selector
.attr()
.find()

0

あなたはIDを必要としませんが、このシナリオではattr

var id = $(this).attr('id'); 

を経由して、それをつかんでイベントを発生させる要素のidにアクセスすることができます。 thisはイベントを発生させたDOM要素に設定されるため、$(this).toggleをそのまま使用できます。

$('.tagform').submit(function() { 
    $(this).toggle('1000'); 
    return false; 
}); 
+0

これは素晴らしいです。フォーム自体ではなく、同じフォーム内の別の要素を切り替えるにはどうすればよいですか? –

+0

@hoverhandそのフォーム内で検索するには '$(this).find( '...')'を使いたいと思うでしょう。 – JaredPar