タグ付けされた質問 「javascript」

ECMAScript(JavaScript / JS)とそのさまざまな方言/実装(ActionScriptを除く)でのプログラミングに関する質問。このタグが単独で使用されることはほとんどありませんが、ほとんどの場合、[node.js]、[jquery]、[json]、および[html]タグに関連付けられています。

4
すべてのjqueryイベントを$(document)にバインドする必要がありますか?
これはどこから来たのか 私が初めてjQueryを学んだとき、私は通常、次のようなイベントをアタッチしました。 $('.my-widget a').click(function() { $(this).toggleClass('active'); }); セレクターの速度とイベントの委任についてさらに学習した後、「jQueryイベントの委任によってコードが高速化される」といくつかの場所で読みました。だから私はこのようなコードを書き始めました: $('.my-widget').on('click','a',function() { $(this).toggleClass('active'); }); これは、非推奨の.live()イベントの動作を複製するための推奨される方法でもありました。私のサイトの多くは常に動的にウィジェットを追加/削除しているので、これは私にとって重要です。ただし、既存のコンテナ「.my-widget」に追加された要素のみが動作するため、上記は.live()とまったく同じようには動作しません。そのコードが実行された後、htmlの別のブロックを動的に追加した場合、それらの要素はそれらにバインドされたイベントを取得しません。このような: setTimeout(function() { $('body').append('<div class="my-widget"><a>Click does nothing</a></div>'); }, 1000); 私が達成したいこと: .live()の古い動作//イベントをまだ存在しない要素にアタッチすることを意味します .on()の利点 イベントをバインドする最速のパフォーマンス イベントを管理する簡単な方法 私は今このようなすべてのイベントを添付します: $(document).on('click.my-widget-namespace', '.my-widget a', function() { $(this).toggleClass('active'); }); それは私のすべての目標を満たしているようです。(はい、IEでは何らかの理由で遅くなりますが、理由はわかりませんか?)単一のイベントのみが単一の要素に関連付けられ、セカンダリセレクターはイベントが発生したときにのみ評価されるため、高速です(これが間違っている場合は修正してください)。名前空間は、イベントリスナーを簡単に切り替えることができるので素晴らしいです。 私の解決策/質問 そのため、jQueryイベントは常に$(document)にバインドする必要があると考え始めています。 これをしたくない理由はありますか? これはベストプラクティスと見なすことができますか?そうでない場合、なぜですか? これを全部読んだなら、ありがとう。あらゆる/すべてのフィードバック/洞察に感謝します。 仮定: .on()//少なくともバージョン1.7 をサポートするjQueryの使用 イベントを動的に追加されるコンテンツに追加したい 読み/例: http://24ways.org/2011/your-jquery-now-with-less-suck http://brandonaaron.net/blog/2010/03/4/event-delegation-with-jquery http://www.jasonbuckboyer.com/playground/speed/speed.html http://api.jquery.com/on/

30
jsを使用してソフトウェアのバージョン番号を比較する方法は?(番号のみ)
ソフトウェアのバージョン番号は次のとおりです。 "1.0", "1.0.1", "2.0", "2.0.0.1", "2.0.1" これをどのように比較できますか?正しい順序は次のとおりです。 "1.0", "1.0.1", "2.0", "2.0.0.1", "2.0.1" アイデアは簡単です...:最初の桁を読んで、2番目の桁を読んだ後、3番目の桁を読んでください。しかし、バージョン番号を浮動小数点数に変換することはできません。この: "1.0.0.0", "1.0.1.0", "2.0.0.0", "2.0.0.1", "2.0.1.0" そして、これは背後にあるアイデアが何であるかを確認するためにより明確です...しかし、それをコンピュータプログラムに変換する方法は?これを分類する方法について誰かが何か考えを持っていますか?ありがとうございました。

8
凍結とシールの違い
JavaScriptメソッドfreezeとについて聞いたところseal、それを使用して任意のオブジェクトを不変にすることができます。 使用方法の簡単な例を次に示します。 var o1 = {}, o2 = {}; Object.freeze(o2); o1["a"] = "worked"; o2["a"] = "worked"; alert(o1["a"]); //prints "worked" alert(o2["a"]); //prints "undefined" 違いは何であるfreezeとはseal?彼らはパフォーマンスを向上させることができますか?

5
「非推奨の警告:moment.jsでRFC2822日付を変換しようとすると、瞬間の構築がjs Dateにフォールバックする」
次のコードを使用して、moment.jsを使用してサーバー側の日時を現地時間に変換しています。 moment(moment('Wed, 23 Apr 2014 09:54:51 +0000').format('lll')).fromNow() しかし、私は得ています: 非推奨の警告:構築がjs Dateにフォールバックする瞬間。これはお勧めできません。今後のメジャーリリースで削除される予定です。詳細については、https://github.com/moment/moment/issues/1407を参照してください。 取り除けないようです!どうすれば修正できますか?


10
繰り返される文字で満たされた可変長の文字列を作成する
だから、私の質問はここのJavaフォームで誰かに尋ねられました:Java-指定された長さで特定の文字で満たされた新しいStringインスタンスを作成します。最善の解決策は? 。。。しかし、私はそれに相当するJavaScriptを探しています。 基本的に、各フィールドの「maxlength」属性に基づいて、テキストフィールドに「#」文字を動的に入力します。したがって、入力にhasがmaxlength="3"ある場合、フィールドは「###」で埋められます。 理想的にはJavaのようなものが存在しますStringUtils.repeat("#", 10);が、これまでのところ、私が考えることができる最良のオプションは、最大長に達するまで「#」文字を1つずつループして追加することです。それよりももっと効率的な方法があるという気持ちを揺さぶることはできません。 何か案は? 参考:入力にデフォルト値を設定することはできません。「#」文字はフォーカスをクリアする必要があり、ユーザーが値を入力しなかった場合は、ぼかしで「補充」する必要があるためです。それは私が心配している「補充」のステップです
164 javascript  html  string 

9
bindで追加されたイベントリスナーの削除
JavaScriptで、bind()を使用してイベントリスナーとして追加された関数を削除する最良の方法は何ですか? 例 (function(){ // constructor MyClass = function() { this.myButton = document.getElementById("myButtonID"); this.myButton.addEventListener("click", this.clickListener.bind(this)); }; MyClass.prototype.clickListener = function(event) { console.log(this); // must be MyClass }; // public method MyClass.prototype.disableButton = function() { this.myButton.removeEventListener("click", ___________); }; })(); 私が考えることができる唯一の方法は、bindで追加されたすべてのリスナーを追跡することです。 このメソッドを使用した上記の例: (function(){ // constructor MyClass = function() { this.myButton = document.getElementById("myButtonID"); this.clickListenerBind = …

14
Cloud Functions for Firebaseを構造化して、複数のファイルから複数の関数をデプロイするにはどうすればよいですか?
複数のCloud Functions for Firebaseを作成し、1つのプロジェクトからすべてを同時にデプロイしたいと考えています。また、各機能を個別のファイルに分けたいと思います。現在、次のようなindex.jsに両方を配置すると、複数の関数を作成できます。 exports.foo = functions.database.ref('/foo').onWrite(event => { ... }); exports.bar = functions.database.ref('/bar').onWrite(event => { ... }); しかし、fooとbarを別々のファイルに入れたいと思います。私はこれを試しました: /functions |--index.js (blank) |--foo.js |--bar.js |--package.json foo.jsは exports.foo = functions.database.ref('/foo').onWrite(event => { ... }); そしてbar.jsは exports.bar = functions.database.ref('/bar').onWrite(event => { ... }); すべての関数をindex.jsに配置せずにこれを実現する方法はありますか?


9
親イベントで子コンポーネントの関数を呼び出す方法
環境 Vue 2.0では、ドキュメントやその他のドキュメントは、親から子への通信が小道具を介して行われることを明確に示しています。 質問 親はどのようにイベントが小道具を介して起こったことを子供に伝えますか? イベントという小道具を見ればいいですか?それは正しくありませんし、代替案もありません($emit/ $onは親から子へ、ハブモデルは遠方の要素へです)。 例 親コンテナがあり、APIで特定のアクションを実行しても問題がないことを子コンテナに通知する必要があります。関数をトリガーできるようにする必要があります。

22
タイトルをjQueryでURLスラッグに変換する方法は?
私はCodeIgniterのアプリに取り組んでおり、フォームのフィールドにURLスラグを動的に生成させようとしています。句読点を削除して小文字に変換し、スペースをハイフンに置き換えます。したがって、たとえば、ShaneのRib Shackは、shanes-rib-shackになります。 これが私が今まで持っているものです。小文字の部分は簡単でしたが、置換がまったく機能していないようで、句読点を削除する考えがありません。 $("#Restaurant_Name").keyup(function(){ var Text = $(this).val(); Text = Text.toLowerCase(); Text = Text.replace('/\s/g','-'); $("#Restaurant_Slug").val(Text); });
163 javascript  jquery  regex 

9
JavaScript-ドキュメントが読み込まれたかどうかを検出する方法(IE 7 / Firefox 3)
ドキュメントの読み込み後に関数を呼び出したいのですが、ドキュメントの読み込みがまだ完了していない場合があります。ロードされた場合は、関数を呼び出すだけです。ロードされなかった場合は、イベントリスナーをアタッチできます。onloadが呼び出されないため、onloadがすでに起動した後でeventlistenerを追加することはできません。では、ドキュメントが読み込まれたかどうかを確認するにはどうすればよいですか?以下のコードを試してみましたが、完全には機能しません。何か案は? var body = document.getElementsByTagName('BODY')[0]; // CONDITION DOES NOT WORK if (body && body.readyState == 'loaded') { DoStuffFunction(); } else { // CODE BELOW WORKS if (window.addEventListener) { window.addEventListener('load', DoStuffFunction, false); } else { window.attachEvent('onload', DoStuffFunction); } }

8
JavaScriptのコールバック関数の理解を深める
関数をコールバックとして別の関数に渡し、それを実行させることは理解していますが、それを行うための最適な実装を理解していません。次のような非常に基本的な例を探しています。 var myCallBackExample = { myFirstFunction : function( param1, param2, callback ) { // Do something with param1 and param2. if ( arguments.length == 3 ) { // Execute callback function. // What is the "best" way to do this? } }, mySecondFunction : function() { myFirstFunction( false, true, function() …

4
関数内でこのsetIntervalをクリアするにはどうすればよいですか?
通常は、間隔を変数に設定してそれを次のようにクリアしますvar the_int = setInterval(); clearInterval(the_int);が、コードが機能するように無名関数に入れます。 function intervalTrigger() { setInterval(function() { if (timedCount >= markers.length) { timedCount = 0; } google.maps.event.trigger(markers[timedCount], "click"); timedCount++; }, 5000); }; intervalTrigger(); どうすればこれをクリアできますか?私はそれを試しvar test = intervalTrigger(); clearInterval(test);て、確かめようとしましたが、それはうまくいきませんでした。 基本的に、Googleマップがクリックされたときにトリガーを停止するには、これが必要です。 google.maps.event.addListener(map, "click", function() { //stop timer });

8
__proto__はconstructor.prototypeとどのように異なりますか?
function Gadget(name, color) { this.name = name; this.color = color; } Gadget.prototype.rating = 3 var newtoy = new Gadget("webcam", "black") newtoy.constructor.prototype.constructor.prototype.constructor.prototype 常に評価= 3のオブジェクトを返します。 しかし、私が次のことをした場合: newtoy.__proto__.__proto__.__proto__ チェーンが戻ってくるnull。 また、Internet Explorerでは、__proto__プロパティがない場合にnullをどのようにチェックしますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.