0

私は何時間も苦労してきましたが、次のコードを機能させることができません。

<li>
<img width="100px" height="100px" src="$profile_picture">
<p>Username: $username</p>
<p>UserID: $userid</p>
<p>Bio: $bio</p>
<p>Website: $website</p>
<input type="button" value="Block" data-role="button" id="myButton"/>
</li>
<li data-role="list-divider"></li>

ボタンの値を「ブロック」に変更したいのですが、これは私のjavascriptです:

<script type="text/javascript">
$("input[type='button']").toggle(function () {
    $(this).val("Block");
}, function () {
    $(this).val("Blocked");
});
</script>

次のバージョンの jquery と jqm を使用しています。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>

これが適切に機能しない理由は何か分かりますか? すべてのヘルプは非常に高く評価されています...TKS!

4

3 に答える 3

6

そのtoggle()ように使用される関数は、jQuery 1.8 で廃止され、1.9 で削除されました。

$("#myButton").on('click', function(){
    $(this).val(function(i,val) {
        return val=='Block' ? 'Blocked' : 'Block';
    });
});

また、モバイルの前に jQuery をロードする必要があります。

<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script src="http://code.jquery.com/mobile/1.3.0/jquery.mobile-1.3.0.min.js"></script>

そして、ドキュメントの準備機能を覚えるか、コードを一番下に追加します。

于 2013-05-22T18:12:25.453 に答える
5

使用toggleしている関数は jQuery バージョン 1.9 で削除されました (非推奨のバージョン: 1.8、削除された: 1.9)

http://api.jquery.com/toggle-event/

clickこれをハンドラーに実装して値を切り替えることで、同じことを実現できます。

なぜ削除されたのですか?[バージョン 1.9]

http://jquery.com/upgrade-guide/1.9/#toggle-function-function-removed

これは、「要素をクリックして指定した機能を実行する」という.toggle(). .toggle()非推奨ではない「要素の可視性の変更」と混同しないでください。前者は、混乱を減らし、ライブラリのモジュール化の可能性を高めるために削除されています。jQuery Migrate プラグインを使用して機能を復元できます。

なぜ廃止されたのですか?[バージョン 1.8]

http://bugs.jquery.com/ticket/11786

2 つの .toggles があることをご存知ですか? 私たちが気に入っているものは、必要に応じて .show または .hide を実行し、 http: //api.jquery.com/toggle/ で文書化されています。もう 1 つは、ラウンド ロビン .click ハンドラーをセットアップします。これは、 http : //api.jquery.com/toggle-event/ に記載されています。

.toggle() メソッドは便宜上提供されています。同じ動作を手動で実装するのは比較的簡単で、.toggle() に組み込まれた仮定が制限を証明する場合、これが必要になることがあります。たとえば、.toggle() が同じ要素に 2 回適用された場合、正しく動作することは保証されません。.toggle() は内部でクリック ハンドラーを使用して作業を行うため、.toggle() に関連付けられているビヘイビアーを削除するには、クリックのバインドを解除する必要があります。これにより、他のクリック ハンドラーがクロスファイアに巻き込まれる可能性があります。実装はイベントで .preventDefault() も呼び出すため、要素で .toggle() が呼び出された場合、リンクはたどられず、ボタンはクリックされません。

私たちの悲惨さからそれを出しましょう。

于 2013-05-22T18:11:40.713 に答える
0

みんなが言ったことに加えて、別のトグルを少し異なる方法で使用できます

 <input type="button" value="Block" data-role="button" class="myButton"/>
 <input type="button" value="Blocked" data-role="button" class="myButton" style="display:none;"/>

$(".myButton").on('click', function (){
    $('.myButton').toggle()
});
于 2013-05-22T18:14:10.040 に答える