Rumah  >  Soal Jawab  >  teks badan

jquery - jquey tabs ajax load html 冲突问题?

tabs load的html,里面有js,也有html,id,都有可能冲突,如何解决?

(不用ifame哦,iframe每次加载明显不如load,即便是缓存,也要初始化很多的,而且iframe内部带的dialog要在iframe外显示也很费劲,多个页面有同样的dialog也会出现这种问题)

迷茫迷茫2691 hari yang lalu829

membalas semua(1)saya akan balas

  • 过去多啦不再A梦

    过去多啦不再A梦2017-05-15 16:51:51

    Terdapat tiga pilihan:

    1. Gunakan beberapa konvensyen penamaan untuk mengubah suai id kepada bentuk tidak bercanggah. Walaupun penyelesaian ini nampaknya paling tidak selaras dengan keperluan subjek, saya secara peribadi mengesyorkannya, yang akan mengurangkan banyak masalah pada peringkat seterusnya. Jika html ini secara logik pada antara muka yang sama, maka ia sepatutnya mempunyai id yang berbeza, jika tidak, anda akan menghadapi masalah semasa menulis logik dan gaya pada masa hadapan.

    2. Dengan mengandaikan bahawa hanya html tab akan mempunyai konflik ID, dan hanya terdapat satu tab dipaparkan pada masa yang sama, maka anda boleh mempertimbangkan untuk menanggalkan tab yang tidak dipaparkan daripada DOM setiap kali anda memotong tab dan tambahkannya apabila diperlukan.

    3. Gunakan <iframe src="about:blank"></iframe> untuk memaparkan html, dan kandungannya boleh diubah suai dengan menetapkan <iframe>'s contentWindow.document.body.innerHTML. Jika anda masih mahu dapat memaparkan gaya dan skrip luaran HTML dengan baik, serta pelbagai dialog, anda juga boleh menggunakan pelbagai kaedah penggodaman, tetapi ia masih merupakan penggodaman dengan masalah yang tidak berkesudahan.

    P.S. Atas permintaan subjek, saya akan menambah beberapa idea hack.

    1. Bagaimana untuk membuat dialog UI jQuery dimasukkan ke dalam tempat yang ditentukan secara lalai?

    Anda boleh mengatasi pilihan lalai dialog melalui kod berikut, yang penting ialah pilihan appendTo.

    $.extend($.ui.dialog.prototype.options, {
        appendTo: tabNode
    });
    

    Tetapkan pilihan ini setiap kali sebelum memuatkan tab atau selepas menukar tab, dan tetapkan pada nod tab yang sedang dipaparkan.

    balas
    0
  • Batalbalas