Saya memiliki masalah dengan memalsukan klik jangkar melalui jQuery: Mengapa kotak tebal saya muncul pertama kali saya mengklik tombol input, tetapi bukan yang kedua atau ketiga kalinya?
Ini kode saya:
<input onclick="$('#thickboxId').click();" type="button" value="Click me" />
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
Itu selalu berfungsi ketika saya mengklik langsung pada tautan, tetapi tidak jika saya mencoba mengaktifkan kotak tebal melalui tombol input. Ini dalam FF. Untuk Chrome sepertinya berfungsi setiap saat. Ada petunjuk?
Jawaban:
Cobalah untuk menghindari inline panggilan jQuery Anda seperti itu. Letakkan tag skrip di bagian atas halaman untuk mengikat
click
acara:Edit:
Jika Anda mencoba mensimulasikan pengguna mengklik tautan secara fisik, maka saya tidak percaya itu mungkin. Solusinya adalah memperbarui acara tombol
click
untuk mengubahwindow.location
dalam Javascript:Edit 2:
Sekarang saya menyadari bahwa Thickbox adalah widget UI jQuery khusus, saya menemukan petunjuk di sini :
Instruksi:
Buat elemen tautan (
<a href>
)Berikan tautan atribut kelas dengan nilai thickbox (
class="thickbox"
)Dalam
href
atribut tautan tambahkan jangkar berikut:#TB_inline
Dalam
href
atribut setelah#TB_inline
menambahkan string kueri berikut ke jangkar:? height = 300 & width = 300 & inlineId = myOnPageContent
Ubah nilai tinggi, lebar, dan inlineId sesuai permintaan (inlineID adalah nilai ID elemen yang berisi konten yang ingin Anda tampilkan di ThickBox.
Secara opsional Anda dapat menambahkan modal = true ke string kueri (mis
#TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true
) sehingga menutup ThickBox akan membutuhkan pemanggilantb_remove()
fungsi dari dalam ThickBox. Lihat contoh konten modal tersembunyi, di mana Anda harus mengklik ya atau tidak untuk menutup ThickBox.sumber
.prop()
alih-alihattr()
mendapatkan url yang diselesaikan.Apa yang berhasil untuk saya adalah:
sumber
focus
sebagai ganticlick
:)[0]
menunjukkan elemen pertama dari array - pemilih mengembalikan 0 atau lebih elemen saat dijalankan. Sangat disayangkan bahwa.click()
tampaknya tidak bekerja secara langsung di sini karena tampaknya doa lain diterapkan pada koleksi elemen dari penyeleksi secara konsisten di seluruh kerangka kerja.[0]
atau.get(0)
sama. Ini menggunakan versi DOM elemen, bukan versi jQuery. The.click()
fungsi dalam hal ini bukan acara jQuery klik, tapi yang asli.Baru-baru ini saya menemukan cara memicu acara klik mouse melalui jQuery.
sumber
pendekatan ini bekerja pada firefox, chrome dan IE. semoga membantu seseorang:
sumber
Meskipun ini adalah pertanyaan yang sangat lama saya menemukan sesuatu yang lebih mudah untuk menangani tugas ini. Ini adalah plugin jquery yang dikembangkan oleh tim UI jquery yang disebut simulasi. Anda dapat memasukkannya setelah jquery dan kemudian Anda dapat melakukan sesuatu seperti
berfungsi dengan baik di chrome, firefox, opera, dan IE10. Anda dapat mengunduhnya dari https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js
sumber
simulate()
adalah bahwa ia mengirimkan acara jQuery serta memicu tindakan browser asli. Ini sekarang jawaban yang benar +1Judul pertanyaan mengatakan "Bagaimana saya bisa mensimulasikan klik jangkar di jQuery?". Nah, Anda dapat menggunakan metode "trigger" atau "triggerHandler", seperti:
Tidak diuji, skrip yang sebenarnya ini, tetapi saya telah menggunakan
trigger
et al sebelumnya, dan mereka bekerja dengan baik.UPDATE
triggerHandler
tidak benar-benar melakukan apa yang diinginkan OP. Saya pikir 1421968 memberikan jawaban terbaik untuk pertanyaan ini.sumber
Saya sarankan untuk melihat Selenium API untuk melihat bagaimana mereka memicu klik pada elemen dengan cara yang kompatibel dengan browser:
Cari
BrowserBot.prototype.triggerMouseEvent
fungsinya.sumber
Saya yakin Anda bisa menggunakan:
Ini akan dengan mudah memicu fungsi klik, tanpa benar-benar mengkliknya.
sumber
Apakah Anda perlu memalsukan klik jangkar? Dari situs kotak tebal:
Jika itu dapat diterima, semudah menempatkan kelas kotak tebal pada input itu sendiri:
Jika tidak, saya akan merekomendasikan menggunakan Firebug dan menempatkan breakpoint dalam metode onclick elemen anchor untuk melihat apakah itu hanya dipicu pada klik pertama.
Edit:
Oke, saya harus mencobanya sendiri dan bagi saya persis kode Anda berfungsi di Chrome dan Firefox:
Jendela muncul tidak masalah jika saya mengklik input atau elemen jangkar. Jika kode di atas bekerja untuk Anda, saya sarankan kesalahan Anda terletak di tempat lain dan Anda mencoba untuk mengisolasi masalahnya.
Kemungkinan lain adalah bahwa kita menggunakan versi jquery / thickbox yang berbeda. Saya menggunakan apa yang saya dapatkan dari halaman kotak tebal - jquery 1.3.2 dan kotak tebal 3.1.
sumber
Anda dapat membuat formulir melalui jQuery atau dalam kode halaman HTML dengan tindakan yang meniru tautan Anda href:
<a id="anchor_link" href="somepath.php">click here</a>.
sumber
Untuk mensimulasikan klik pada jangkar saat mendarat di sebuah halaman, saya hanya menggunakan jQuery untuk menghidupkan properti scrollTop di
$(document).ready.
Tidak perlu pemicu yang kompleks, dan itu berfungsi pada IE 6 dan setiap browser lainnya.sumber
Jika Anda tidak perlu menggunakan JQuery, seperti saya tidak. Saya punya masalah dengan fungsi lintas browser
.click()
. Jadi saya menggunakan:sumber
Di Javascript Anda bisa melakukan ini
dan Anda bisa menggunakannya seperti
sumber
Menggunakan skrip Jure saya membuat ini, untuk dengan mudah "klik" elemen sebanyak yang Anda inginkan.
Saya baru saja menggunakannya Pustaka Google pada 1600+ item dan berfungsi dengan baik (di Firefox)!
sumber
createEventObject
di IE lebih untuk membuat objek acara untuk diteruskan ke penangan, daripada mengirim acara sintetis. IEfireEvent
mungkin lebih dekatdispatchEvent
, tetapi hanya akan memicu pendengar - bukan tindakan browser default. Namun, di IE Anda bisa memanggilclick
metode.JQuery('#left').triggerHandler('click');
berfungsi dengan baik di Firefox dan IE7. Saya belum mengujinya di browser lain.Jika ingin memicu klik pengguna otomatis lakukan hal berikut:
sumber
Ini tidak berfungsi pada browser asli android untuk mengklik "elemen input (file) tersembunyi":
Tapi ini berhasil:
sumber
Dalam mencoba mensimulasikan 'klik' dalam unit test dengan pemintal jQuery UI, saya tidak bisa mendapatkan jawaban sebelumnya untuk bekerja. Secara khusus, saya mencoba mensimulasikan 'putaran' memilih panah bawah. Saya melihat tes unit pemintal jQuery UI dan mereka menggunakan metode berikut, yang bekerja untuk saya:
sumber