0

これはおそらく経験豊富な開発者には明らかですが、jQuery を独学で学ぼうとしていて、これに出くわしました。ID が「btn」のボタンがあり、Html が「Msg 1」であるとします。ボタンがクリックされたときに Html を「Msg 2」に変更したいとします。これは私がやろうとした方法であり、うまくいきます。ただし、ボタンがフォームの一部である場合、この方法は機能しません。ボタンがフォームの一部である場合にそれを行う方法はありますか?

(function($) {
   var test = true;
   $('#btn').on('click',function() {
        if(test == true) {
            test = false;
            $(this).html('Msg 2');
        } else {
            test = true;
            $(this).html('Msg 1');
        }
   }
})(jQuery);
4

3 に答える 3

2

これは、あなたが求めたことを実行する JSFiddle コードです。

http://jsfiddle.net/RSVdw/1/

.html() を .val() に変更し、e.preventDefault() を追加して、フォームが押されたときにページ全体が更新されないようにしました。

HTML コード:

<html>
<head></head>
<body>
    <form>
        Press me &gt;&gt; <input type="submit" id="btn" value="Msg 1"/>
    </form>
</body>
</html>​

JS コード:

(function($) {
   var test = true;
   $('#btn').on('click',function(e) {
       e.preventDefault();
        if(test == true) {
            test = false;
            $(this).val('Msg 2');
        } else {
            test = true;
            $(this).val('Msg 1');
        }
   });
})(jQuery);​
于 2012-04-27T04:22:52.623 に答える
0

あなたの質問を正しく理解できませんでしたが、これを試すことができます。

$('#btn').live('click', function(event) 
    {

         $(this).val('Msg 2');
    });
于 2012-04-27T04:24:09.717 に答える
0

上記の解決策は正しいですが、ボタンが動的に作成されない限り、「on」または非推奨の「live」を使用する必要はありません。

$('#btn').click(function(e) {
    e.preventDefault(); //.. prevent the button from submitting the form
    test = !test;
    $(this).text(test ? 'msg 1' : 'msg 2'); //.. no need to use .html if you're just switching text
});

注:このソリューションは、 を使用していることを前提としています。 を使用している<button>場合は、代わりに<input type='submit|button'>を使用する必要があります。$(this).val()$(this).text()

于 2012-04-27T04:48:06.923 に答える