0

私はこのjQueryを持っています:

jQuery(".storyImg").each(
function(){
    if(this.width() > this.height()){
        jQuery(this).addClass("landscape");
    } else if (this.width() < this.height()){
        jQuery(this).addClass("portrait");
    } else {

    }
}
);

機能していないようです。関数内からアラートを発生させることさえできません。それは間違いなく html ファイルに含まれており、クラス .storyImg は間違いなく正しいです。

4

3 に答える 3

1

内部eachコールバックは、またはメソッドthisを持たない dom 要素を参照します。要素の jQuery ラッパーでこれらのメソッドを呼び出す必要があります。widthheight

jQuery(".storyImg").each(function () {
    var $this = jQuery(this)
    if ($this.width() > $this.height()) {
        $this.addClass("landscape");
    } else if ($this.width() < $this.height()) {
        $this.addClass("portrait");
    } else {

    }
});
于 2013-10-09T02:36:34.697 に答える
0

jQueryオブジェクトではないため、実行する必要がありjQuery(this).width()ます。コンソールにはエラーが散らばっているはずです。jQuery を 1 回だけ呼び出す必要があります。jQuery(this).height()thisthis

$(window).load()画像がロードされるのを待ちたいので、これを実行するのも待つ必要があります。

jQuery(".storyImg").each(function(){
  var $this = jQuery(this);
  if($this.width() > $this.height()){
    $this.addClass("landscape");
  } else if ($this.width() < $this.height()){
    $this.addClass("portrait");
  } else {

  }
});
于 2013-10-09T02:35:51.823 に答える
0

jsの第一人者はいませんが、呼び出すことはできませんthis.width()。あなたがすでにそこに使っているようにjQuery(this).width()。それをvarに追加する方が良い:

var $this = jQuery(this);
if($this.width() > $this.height()){
  // blah
}
于 2013-10-09T02:37:47.407 に答える