0

margin-leftクリックに基づいてノードのを変更するためのスニペットがあります。

$("#left").click(function(){
    var slidewidth = $('#slide_box').attr('width'),
        slideleft = $('#slide_box').attr('margin-left');
    if (slideleft == 0) {
    }
    else {
        $("#slide_box").animate({"margin-left": "+=135px"}, "fast");
    } 
});

さて、もしそうならslideleft == 0、それは何もしないはずです。しかし、そうです。ただし、var slidewidthを計算すると、返されます00pxif引数でその値をどのように定義しますか?私が試したときif (slideleft == 0px)、それはただスクリプトを殺しました。

4

5 に答える 5

2

widthとのmargin-left値を取得するために正しい方法を使用しているとは思いません。どちらも要素の属性ではなくcss値であり、.attr()要素の属性のみを取得します(これらの名前で要素に属性を設定している場合を除きます。これは、将来非常に混乱する可能性があります)。代わりにこれを試してください:

$("#left").click(function(){
    var slidewidth = $('#slide_box').css('width'),
        slideleft = $('#slide_box').css('margin-left'); 
    /* or alternatively:
       var slidewidth = parseInt($('#slide_box').css('width'),10),
        slideleft = parseInt($('#slide_box').css('margin-left'), 10); 
     */
    if (slideleft == '0px' /* with parseInt values you would just need 0 here*/) {
    }
    else {
        $("#slide_box").animate({"margin-left": "+=135px"}, "fast");
    } 
});
于 2012-12-04T20:45:39.060 に答える
1

マージンを取得してテストするの$('#slide_box').css('margin-left')ではなく、を使用することができます$('#slide_box').attr('margin-left')slideleft === '0px'

于 2012-12-04T20:44:30.063 に答える
0

これを試して:

if (slideleft === '0px')
于 2012-12-04T20:39:40.587 に答える
0

を実行しconsole.log(slidewidth)て出力を確認できます。私はそれが0ではなく0pxになるとかなり確信しています。

于 2012-12-04T20:40:05.950 に答える
0
if ( parseInt(slideleft,10) === 0) {

parseInt..を使用してそれを数値に変換することをお勧めします。そうすれば、あいまいな問題が解決されます。

またはただ if ( +slideleft === 0) {

于 2012-12-04T20:41:23.497 に答える