15

.anyPrototypeで呼び出される関数が1つあります。Jqueryと同じようにしたいと思います。

私のプロトタイプコードは次のとおりです。

 if (item_name == '' || $R(1,ind).any(function(i){return($F("bill_details_"+i+"_narration") == item_name)})) {
     alert("This item already added.");
 }

Jqueryを使用して同等の機能を実行したい。

希望の出力を達成するために私を助けてください。前もって感謝します..

4

5 に答える 5

23

IE 9以降の場合、次の機能が組み込まれています。

some()メソッドは、配列内の一部の要素が、提供された関数によって実装されたテストに合格するかどうかをテストします。

https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some

[2, 4, 6, 8, 10].some(function(n) { return n > 5; });
// -> true (the iterator will return true on 6)

IE 8以下の場合:

プロトタイプ任意

[2, 4, 6, 8, 10].any(function(n) { return n > 5; });
// -> true (the iterator will return true on 6)

あなたが使用することができますjQuery.grep

jQuery.grep([2, 4, 6, 8, 10], function(n) { return n > 5; }).length > 0;
// -> true (as grep returns [6, 8, 10])

アンダースコア _.anyまたは_.some

_.any([2, 4, 6, 8, 10], function(n) { return n > 5; });
// -> true (the iterator will return true on 6)
于 2013-03-27T10:58:02.640 に答える
5

ES5には、配列内のいずれかのArray.prototype.some要素が述語関数と一致するかどうかをテストし、一致する要素が見つかるとすぐに反復を停止するという関数が組み込まれています。

.some(function(el) {
    return el.value === item_name;
});

その場合、問題は目的の要素の配列を作成することの1つになります。これは、jQueryに「範囲」演算子がないため、プロトタイプの場合よりも困難です。幸い、組み込みではない場合$.mapでも、空の要素を繰り返し処理するため、次を使用できます。Array.prototype.mapnew Array(ind)

var found = $.map(new Array(ind), function(_, x) {
    return "bill_details_" + (x + 1) + "_narration";
}).some(function(id) {
    var el = document.getElementById(id);
    return el && (el.value === item_name);
});

上記のリンクには、.some古いブラウザ用のシムが含まれています。

于 2013-03-27T12:15:37.027 に答える
3

JQueryには、ドキュメントからの.is()メソッドがありますCheck the current matched set of elements against a selector, element, or jQuery object and return *true* if at least one of these elements matches the given arguments。したがって、同等のコードは次のとおりです。

 if (item_name == '' || $([1,ind]).is(function(i) { return $('#bill_details_'+i+'_narration').attr('name') == item_name; })) {
      alert("This item already added.");
 }
于 2014-12-11T19:21:10.937 に答える
0

http://api.jquery.com/jQuery.grep/があなたが探しているもののようです。

試す

if (item_name == '' || $.grep([1,ind],function(i){return($("#bill_details_"+i+"_narration").attr("name") == item_name)}).length>0) {
     alert("This item already added.");
 }
于 2013-03-27T10:57:23.973 に答える
0

JQueryのドキュメントによると、コールバック関数でfalseを返すと、ループが中断されます。

コールバック関数がfalseを返すようにすることで、特定の反復で$ .each()ループを中断できます。false以外を返すことは、forループのcontinueステートメントと同じです。すぐに次の反復にスキップします。

取得元:http ://api.jquery.com/jquery.each/

于 2015-09-18T13:44:03.367 に答える