jquery 无法使物化css脚本与动态加载的模式一起工作

ep6jt1vc  于 2024-01-07  发布在  jQuery
关注(0)|答案(3)|浏览(90)

我有一个使用MaterializeCSS运行的Rails应用程序。我通常在应用程序中的许多地方使用Materialize,包括JS对象(如FAB按钮),它都工作得很好......除了按钮。
我有这样一段代码,我在模态表单上加载了一个modal form,我有两个需要JS的materializecss组件:1)一个可折叠列表和2)一个可折叠列表。可折叠列表工作正常,但可折叠列表不能。
下面的代码使它运行(或不运行:-().我使用coffeescript和haml:
这就解释了模态:

  1. modalInit: () ->
  2. $('#photo-modal').modal
  3. dismissible: true
  4. opacity: .5
  5. in_duration: 300
  6. out_duration: 200
  7. starting_top: '4%'
  8. ending_top: '10%'
  9. ready: (modal, trigger) ->
  10. App.PhotoTaginput.refresh()
  11. $('.collapsible').collapsible();
  12. $('.dropdown-button').dropdown();

字符串
请注意,可折叠和可折叠是以相同的方式初始化的!
我用这个脚本加载modal:

  1. showModal: (element) ->
  2. _this = this
  3. photoId = $(element).parents('.photo-widget').data("photoid")
  4. url = '/photos/' + photoId + '?view=modal'
  5. $('#photo-modal > .modal-content').load url, (result) ->
  6. $('#photo-modal').modal('open');


这会获取一些HTML,看起来像这样:

  1. .row
  2. .image_info#photo_id{:photo_id=>@photo.id, "data-photo_id"=>@photo.id}
  3. .col.l5
  4. .modal-toolbar
  5. %a.waves-effect.waves-light.btn.like{:type => "button", :class=>current_user.voted_for?(@photo) && "red"}
  6. %i.fa.fa-thumbs-o-up
  7. %a.dropdown-button.btn{"data-activates" => "dropdown1", :href => "#"} Drop Me!
  8. %ul#dropdown1.dropdown-content
  9. %li
  10. %a{:href => "#!"} one
  11. %li
  12. %a{:href => "#!"} two
  13. %li.divider
  14. %li
  15. %a{:href => "#!"} three
  16. .col.l12#modal_image
  17. %img.bg.responsive-img{:src => "#{@photo.url('org')}"}
  18. %ul.collapsible.overlay-menu.overlay-menu-show{"data-collapsible"=>"accordion"}
  19. %li
  20. .collapsible-header.overlay-menu-header
  21. %i.material-icons info
  22. info
  23. .overlay-menu-body.collapsible-body
  24. %table
  25. %tbody
  26. %tr
  27. %td Date
  28. %[email protected]_taken_formatted
  29. %tr
  30. %td ID
  31. %[email protected]
  32. %tr
  33. %td Country
  34. %[email protected]
  35. %tr
  36. %td Model
  37. %[email protected]
  38. %tr
  39. %td Make
  40. %[email protected]


它必须与动态初始化的JS有关。我这样说是因为我可以看到,当我按下按钮时,在CSS上的CSS不会改变。这有点奇怪,因为它的初始化方式与可折叠的相同。
我非常确定jquery和materialize库已经正确加载,我已经在应用程序的其他代码部分中使用了这两个库

txu3uszq

txu3uszq1#

文档说,当你动态创建它时,你必须初始化它。
jQuery插件
仅当动态创建下拉列表时,才需要对下拉列表进行搜索。

  1. $('.dropdown-button').dropdown({
  2. inDuration: 300,
  3. outDuration: 225,
  4. constrain_width: false, // Does not change width of dropdown to that of the activator
  5. hover: true, // Activate on hover
  6. gutter: 0, // Spacing from edge
  7. belowOrigin: false, // Displays dropdown below the button
  8. alignment: 'left' // Displays dropdown with edge aligned to the left of button
  9. }
  10. );

字符串

l2osamch

l2osamch2#

原来是一些HTML增强。
我不小心装了这个零件好几次:

  1. %a.dropdown-button.btn{"data-activates" => "dropdown1", :href => "#"} Drop Me!
  2. %ul#dropdown1.dropdown-content
  3. %li
  4. %a{:href => "#!"} one
  5. %li
  6. %a{:href => "#!"} two
  7. %li.divider
  8. %li
  9. %a{:href => "#!"} three

字符串
这导致在HTML中出现了几个#dropdown1的id,这破坏了HTML的初始化。

3gtaxfhh

3gtaxfhh3#

更新页面后,我的菜单只加载了一次,我通过同时插入两个方法解决了这个问题。

  1. data-activates="dropdown1"
  2. data-target="dropdown1"

个字符

相关问题