コードはほぼ間違っていましたが、間違った順序でしかありませんでした。
複数のupdateWidth()
関数の宣言を宣言し、クラスflex
(この場合は2回)の列に対してウィンドウのサイズ変更イベントをバインドする前に、その結果、イベントが次々と発生しました。だから私はそれを.each()
コールから外して、代わりに.each()
を関数の中に入れて、今はうまくいくように思えます。
$(document).ready(function() {
// function declaration
function updateWidth() {
$('col.flex').each(function() {
var flex = $(this);
var original = flex.data('original');
var flexIndex = flex.index() + 1; /* Add 1 because JS and CSS differ with indexes */
var flexCell = $('.uiGrid table tbody td:nth-child(' + flexIndex + ')');
flexCell.css({'background':'#ff0000'});
//////////////////////////////////////////////////////////////
if(flexCell.width() < original) {
$('col.flex').removeClass('flex-width');
}
else if(flexCell.width() >= original) {
$('col.flex').addClass('flex-width');
}
});
}
// initial call
updateWidth();
// subsequent call upon window resize
$(window).bind('resize', function() {
updateWidth();
});
});
フレックス機能を動作させるために別のクラスを追加する必要がありました。 1つのクラスは、列が常にフレキシブル(flex
)で、列の幅を制御する別のクラス(flex-width
)を示します。これは、列にフレキシブルなフラグが立てられていることを失うことなく、柔軟な幅を追加/削除できることを意味します。
私が作ったもう1つのマイナーコード調整は、最初は動作しませんでしたが、重複していましたが、すべてのダブルjquery'edオブジェクトを削除することでした。一つの例は:
var flex = $(this); // flex is now a jquery object
var original = $(flex).data('original'); // flex is turned into a jquery object again
var flex = $(this); // flex is now a jquery object
var original = flex.data('original'); // flex is already a jquery object, so can reference it as a var
するにはを参照してくださいコードで:
http://jsfiddle.net/GoranMottram/TysFf/1/
で参照してくださいデモ:
http://jsfiddle.net/GoranMottram/TysFf/1/embedded/result/
それは再度追加されませんフレックスクラス再び列を大きくするとき...クラスが削除されたので、コードは再び実行されません!その中間の列**は屈曲してはいけません。常に300ピクセル幅にする必要があります。 – Cameron
ああそうです。うまくいけばそれを解決するために、私は答え、コード、デモを更新しました。 –
乾杯の友達が働いているようです – Cameron