Using Chained Jquery plugin

ぃ、小莉子 提交于 2019-12-20 04:25:28

问题


I am trying to use the remote Chained plugin in CakePhp (http://www.appelsiini.net/projects/chained) I used Jquery to test an alert and that works but just the chained plugin is not working. I am trying to follow the example on their website using their code. If you want to view my page go to http://team.southpacificavionics.com/customers/test login: guest password: password

jquery.chained.remote.min.js

/*! Chained 1.0.0 - MIT license - Copyright 2010-2014 Mika Tuupola */
!function(a){"use strict";a.fn.remoteChained=function(b){var c=a.extend({},a.fn.remoteChained.defaults,b);return c.loading&&(c.clear=!0),this.each(function(){function b(b){var c=a(":selected",d).val();a("option",d).remove();var e=[];if(a.isArray(b))e=a.isArray(b[0])?b:a.map(b,function(b){return a.map(b,function(a,b){return[[b,a]]})});else for(var f in b)b.hasOwnProperty(f)&&e.push([f,b[f]]);for(var g=0;g!==e.length;g++){var h=e[g][0],i=e[g][1];if("selected"!==h){var j=a("<option />").val(h).append(i);a(d).append(j)}else c=i}a(d).children().each(function(){a(this).val()===c+""&&a(this).attr("selected","selected")}),1===a("option",d).size()&&""===a(d).val()?a(d).prop("disabled",!0):a(d).prop("disabled",!1)}var d=this,e=!1;a(c.parents).each(function(){a(this).bind("change",function(){var f={};a(c.parents).each(function(){var b=a(this).attr(c.attribute),e=(a(this).is("select")?a(":selected",this):a(this)).val();f[b]=e,c.depends&&a(c.depends).each(function(){if(d!==this){var b=a(this).attr(c.attribute),e=a(this).val();f[b]=e}})}),e&&a.isFunction(e.abort)&&(e.abort(),e=!1),c.clear&&(c.loading?b.call(d,{"":c.loading}):a("option",d).remove(),a(d).trigger("change")),e=a.getJSON(c.url,f,function(c){b.call(d,c),a(d).trigger("change")})}),c.bootstrap&&(b.call(d,c.bootstrap),c.bootstrap=null)})})},a.fn.remoteChainedTo=a.fn.remoteChained,a.fn.remoteChained.defaults={attribute:"name",depends:null,bootstrap:null,loading:null,clear:!1}}(window.jQuery||window.Zepto,window,document);

test.ctp

<?php echo $this->Html->script('jquery.min'); ?>
<?php echo $this->Html->script('jquery.chained.remote.min'); ?>


<script type="text/javascript">
    $(document).ready(function () {
        alert('java is working');
    });
</script>

<select id="mark" name="mark">
  <option value="">--</option>
  <option value="bmw">BMW</option>
  <option value="audi">Audi</option>
</select>
<select id="series" name="series">
  <option value="">--</option>
  <option value="series-3" class="bmw">3 series</option>
  <option value="series-5" class="bmw">5 series</option>
  <option value="series-6" class="bmw">6 series</option>
  <option value="a3" class="audi">A3</option>
  <option value="a4" class="audi">A4</option>
  <option value="a5" class="audi">A5</option>
</select>

<script>
(function() { 
    $("#series").chainedTo("#mark");
});
</script>

回答1:


This has nothing to do with CakePHP really - it's a client-side javascript library.

But you have two problems, first:

(function() { 
    $("#series").chainedTo("#mark");
});

Is not actually "running", you just defined an anonymous function that would run, if called. It should just be moved, probably, to where you're alert resides:

<script type="text/javascript">
    $(document).ready(function () {
        $("#series").chainedTo("#mark");
    });
</script>

Now it'll run, but if you checked the browser Console, it'll be erroring out, something like:

Uncaught TypeError: $(...).chainedTo is not a function

It looks like the library isn't running correctly.

I'm not sure where you got the source code for the jquery chained library, but it's not the current version in the page you link's github grab it from:

https://github.com/tuupola/jquery_chained/

A direct minimized version is listed here:

https://raw.githubusercontent.com/tuupola/jquery_chained/master/jquery.chained.min.js



来源:https://stackoverflow.com/questions/42428535/using-chained-jquery-plugin

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!