jQuery - Jika elemen memiliki kelas, lakukan ini

111

Saya membutuhkan skrip jQuery yang akan melihat apakah ada elemen yang memiliki kelas tertentu dan melakukan tindakan seperti mengubah posisi.

Ini caranya, tapi saya rasa ini tidak akan berhasil.

$("a.contact").toggle(function() {
    $("#contact").animate({
        right: '0'
    }, 2000);

    if ($("#about").hasClass("opened")) {
        $("#about").animate({
            right: -700 + "px"
        }, 2000);
    }
}, function() {
    $("#contact").animate({
        right: -700 + "px"
    }, 2000);
});
Adrian Florescu
sumber
Nah, Anda mengatakan bahwa Anda ingin tahu apakah elemen "ada" memiliki kelas tertentu tetapi pemilih Anda dalam pernyataan if Anda hanya menargetkan elemen yang memiliki id "tentang" apakah itu disengaja? Pada dasarnya mencoba mencari tahu apa yang menjadi masalah Anda. Juga sudahkah Anda mencoba kode di atas untuk melihat apakah itu berfungsi?
Adrian
Memilih pertanyaan karena Anda tidak berpikir itu akan berhasil? Bagaimana kalau kamu mencobanya dulu?!? Jika tidak berhasil, beri tahu kami SECARA KHUSUS apa yang ingin Anda lihat, dan apa yang sebenarnya Anda lihat.
ken
@ken: memang seharusnya begitu, tetapi karena dia hanyalah noob rendahan, mungkin dorongan yang baik ke arah yang benar akan lebih tepat? Kebetulan, @Florescu, jika Anda penasaran apakah ada yang akan berhasil tetapi Anda tidak bisa mengetahuinya, tiru masalahnya di jsfiddle.net dan tautkan ke masalah itu di pertanyaan Anda.
treeface
@treeface: itu adalah dorongan (sebagai pengganti memanggilnya noob rendahan ); jika dia memperbarui pertanyaan menjadi ... Anda tahu, sebenarnya menyertakan pertanyaan, maka saya akan menghapus suara negatif saya. Pertanyaan buruk (atau kurangnya pertanyaan) = suara rendah, sehingga orang lain tidak perlu membuang waktu mereka untuk masalah non-seperti ini.
ken

Jawaban:

193

Pertama, Anda kehilangan beberapa tanda kurung dalam kondisional Anda:

if ($("#about").hasClass("opened")) {
  $("#about").animate({right: "-700px"}, 2000);
}

Tetapi Anda juga dapat menyederhanakan ini menjadi:

$('#about.opened').animate(...);

Jika #abouttidak memiliki openedkelas, itu tidak akan beranimasi.

Jika masalahnya ada pada animasinya sendiri, kita perlu mengetahui lebih banyak tentang pemosisian elemen Anda (absolute? Absolute inside relative parent? Apakah induknya memiliki layout?)

Ken Redler
sumber