1

jquery メソッドがアクティブであることを確認するために "on" を使用することに慣れています (Ajax 経由でページをレンダリングするため)。

元:

$('body').on( 'click', '#demobutton', function (event) {
    alert("CliCKED!");
});

ただし、jQuery Multiselect についても同じことを行う必要があります。以下は、ページがリロードされたときにのみ機能します。ただし、コンテンツが Ajax 経由で読み込まれると、MultiSelect はまったくレンダリングされません。

$("select").multiselect({
   click: function(event, ui){
      alert(ui.value + ' ' + (ui.checked ? 'checked' : 'unchecked') );



   },
   beforeopen: function(){
      $callback.text("Select about to be opened...");
   },
   open: function(){
      $callback.text("Select opened!");
   },
   beforeclose: function(){
      $callback.text("Select about to be closed...");
   },
   close: function(){
      $callback.text("Select closed!");
   },
   checkAll: function(){
      $callback.text("Check all clicked!");
   },
   uncheckAll: function(){
      $callback.text("Uncheck all clicked!");
   },
   optgrouptoggle: function(event, ui){
      var values = $.map(ui.inputs, function(checkbox){
         return checkbox.value;
      }).join(", ");





      alert("CheckboXES " + (ui.checked ? "checked" : "unchecked") + ": " + values);

   }
});

問題は、 $('body').on などの形式を使用して上記をどのように書き直すかです。助けてくれてありがとう。初心者はこちら!

4

1 に答える 1

0

あなたが指定したので(ただし、私のコンテンツがAjax経由でロードされた場合、MultiSelectはまったくレンダリングされません。)

ここでは、選択オプションを ajax でロードし、multiselect jsfiddleをバインドしています。これが役立つかどうか教えてください。

$(document).ready(function(e) {         
        var form_data = $("#frm").serialize();
        var form_url = $("#frm").attr("action");
        var form_method = $("#frm").attr("method").toUpperCase();

        $("#loadingimg").show();

        $.ajax({
            url: form_url, 
            type: form_method,      
            data: form_data,     
            cache: false,
            success: function(returnhtml){     
                alert('binded options to select on ajax success');
                $.when(assignOptions()).done(function(){
                  bind();
                });              
            }           
        });    
});

function assignOptions(){
  $("#display_list").append('<option value="W1">VICccccc</option><option value="W2">NSW</option><option value="W6">TAS 3</option>');
}
function bind(){    
  $("select").multiselect({
   click: function(event, ui){
      alert(ui.value + ' ' + (ui.checked ? 'checked' : 'unchecked') );

   },
   beforeopen: function(){
      $callback.text("Select about to be opened...");
   },
   open: function(){
      $callback.text("Select opened!");
   },
   beforeclose: function(){
      $callback.text("Select about to be closed...");
   },
   close: function(){
      $callback.text("Select closed!");
   },
   checkAll: function(){
      $callback.text("Check all clicked!");
   },
   uncheckAll: function(){
      $callback.text("Uncheck all clicked!");
   },
   optgrouptoggle: function(event, ui){
      var values = $.map(ui.inputs, function(checkbox){
         return checkbox.value;
      }).join(", ");

      alert("CheckboXES " + (ui.checked ? "checked" : "unchecked") + ": " + values);

   }
});
}
于 2014-05-10T06:46:15.330 に答える