Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery可以在JSFIDLE中工作,但不能在Drupal中工作_Javascript_Jquery_Html_Drupal - Fatal编程技术网

Javascript jQuery可以在JSFIDLE中工作,但不能在Drupal中工作

Javascript jQuery可以在JSFIDLE中工作,但不能在Drupal中工作,javascript,jquery,html,drupal,Javascript,Jquery,Html,Drupal,晚上好,, 我是jQuery的新手,因此如果我问了一个愚蠢的问题,希望您原谅我,但显然我一直面临以下问题,我认为我自己无法解决 我试图实现jQuery代码来更改表中列的顺序。代码如下: $(document).ready(function (table, from, to) { var rows = jQuery('tr', table); var cols; rows.each(function () { cols = jQuery(this).chil

晚上好,, 我是jQuery的新手,因此如果我问了一个愚蠢的问题,希望您原谅我,但显然我一直面临以下问题,我认为我自己无法解决

我试图实现jQuery代码来更改表中列的顺序。代码如下:

$(document).ready(function (table, from, to) {
    var rows = jQuery('tr', table);
    var cols;
    rows.each(function () {
        cols = jQuery(this).children('th, td');
        cols.eq(from).detach().insertBefore(cols.eq(to));
    });
}(jQuery('#changeorder'), 1, 0));
在JSFIDLE中有一个id为“changeorder”的表可以很好地工作,但在Drupal网站上不起作用。我还尝试删除$(document).ready部分,并添加(jQuery);最后,同样的结果

在包含jQuery javascript之后,我尝试将代码添加到html.tpl.php:

<!-- jQuery library (served from Google) -->
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>

<script> 
$(document).ready(function (table, from, to) {
var rows = jQuery('tr', table);
var cols;
rows.each(function () {
cols = jQuery(this).children('th, td');
cols.eq(from).detach().insertBefore(cols.eq(to));
});}(jQuery('#changeorder'), 1, 0));
</script>

$(文档).ready(函数(表、从、到){
var rows=jQuery('tr',table);
var-cols;
行。每个(函数(){
cols=jQuery(this).children('th,td');
cols.eq(from).detach().insertBefore(cols.eq(to));
})}(jQuery('#changeorder'),1,0);
我还尝试使用drupal_add_js()将内容直接添加到我需要的页面。仍然没有进展

知道我做错了什么吗


先谢谢你

您应该将整个JS包装在(函数($){})(jQuery)中; 然后用$代替jQuery实例……drupal对我来说总是更喜欢这个

我还建议将其转换为一个函数,您可以在需要时调用该函数,而不是像当前一样将变量直接传递给文档

(function ($) {

$(document).ready(function() {
  function tableChange(table, from, to){ 
    var rows = $('tr', table);
    var cols;
    rows.each(function () {
    cols = $(this).children('th, td');
    cols.eq(from).detach().insertBefore(cols.eq(to));
  };
  tableChange('#changeorder', 1, 0)
});

})(jQuery);
根据我的经验,drupal的最佳实践不应该将脚本添加到html.tpl中,而应该将脚本添加到theme.info文件中:

scripts[] = yourjsfiles/script.js
然后在script.js文件中,可以有如下内容:

(function ($, Drupal, window, document, undefined) {
    $(document).ready(function(){
    //your code here
    }); 
})(jQuery, Drupal, this, this.document);
您希望尽量避免将.tpl文件弄乱。从长远来看,你会为此感谢我:)


编辑:我刚刚注意到在你的问题中包含了jquery。这不能以您尝试的方式完成。默认情况下,Drupal7使用jQuery1.4.4,更新的方法是将整个JS包装到(函数($){})(jquery); 然后用$代替jQuery实例……drupal对我来说总是更喜欢这个

我还建议将其转换为一个函数,您可以在需要时调用该函数,而不是像当前一样将变量直接传递给文档

(function ($) {

$(document).ready(function() {
  function tableChange(table, from, to){ 
    var rows = $('tr', table);
    var cols;
    rows.each(function () {
    cols = $(this).children('th, td');
    cols.eq(from).detach().insertBefore(cols.eq(to));
  };
  tableChange('#changeorder', 1, 0)
});

})(jQuery);
根据我的经验,drupal的最佳实践不应该将脚本添加到html.tpl中,而应该将脚本添加到theme.info文件中:

scripts[] = yourjsfiles/script.js
然后在script.js文件中,可以有如下内容:

(function ($, Drupal, window, document, undefined) {
    $(document).ready(function(){
    //your code here
    }); 
})(jQuery, Drupal, this, this.document);
您希望尽量避免将.tpl文件弄乱。从长远来看,你会为此感谢我:)


编辑:我刚刚注意到在你的问题中包含了jquery。这不能以您尝试的方式完成。默认情况下,Drupal7使用jQuery1.4.4,更新的方法是将整个JS包装到(函数($){})(jquery); 然后用$代替jQuery实例……drupal对我来说总是更喜欢这个

我还建议将其转换为一个函数,您可以在需要时调用该函数,而不是像当前一样将变量直接传递给文档

(function ($) {

$(document).ready(function() {
  function tableChange(table, from, to){ 
    var rows = $('tr', table);
    var cols;
    rows.each(function () {
    cols = $(this).children('th, td');
    cols.eq(from).detach().insertBefore(cols.eq(to));
  };
  tableChange('#changeorder', 1, 0)
});

})(jQuery);
根据我的经验,drupal的最佳实践不应该将脚本添加到html.tpl中,而应该将脚本添加到theme.info文件中:

scripts[] = yourjsfiles/script.js
然后在script.js文件中,可以有如下内容:

(function ($, Drupal, window, document, undefined) {
    $(document).ready(function(){
    //your code here
    }); 
})(jQuery, Drupal, this, this.document);
您希望尽量避免将.tpl文件弄乱。从长远来看,你会为此感谢我:)


编辑:我刚刚注意到在你的问题中包含了jquery。这不能以您尝试的方式完成。默认情况下,Drupal7使用jQuery1.4.4,更新的方法是将整个JS包装到(函数($){})(jquery); 然后用$代替jQuery实例……drupal对我来说总是更喜欢这个

我还建议将其转换为一个函数,您可以在需要时调用该函数,而不是像当前一样将变量直接传递给文档

(function ($) {

$(document).ready(function() {
  function tableChange(table, from, to){ 
    var rows = $('tr', table);
    var cols;
    rows.each(function () {
    cols = $(this).children('th, td');
    cols.eq(from).detach().insertBefore(cols.eq(to));
  };
  tableChange('#changeorder', 1, 0)
});

})(jQuery);
根据我的经验,drupal的最佳实践不应该将脚本添加到html.tpl中,而应该将脚本添加到theme.info文件中:

scripts[] = yourjsfiles/script.js
然后在script.js文件中,可以有如下内容:

(function ($, Drupal, window, document, undefined) {
    $(document).ready(function(){
    //your code here
    }); 
})(jQuery, Drupal, this, this.document);
您希望尽量避免将.tpl文件弄乱。从长远来看,你会为此感谢我:)


编辑:我刚刚注意到在你的问题中包含了jquery。这不能以您尝试的方式完成。默认情况下,Drupal 7使用jQuery1.4.4,更新的方法是

谢谢你的建议,它确实消除了我的许多疑问。然而,即使实施了您的解决方案,我仍然无法达到预期的效果。我尝试过用代码创建一个新的.js文件,然后将其包含在.info文件中(当然,在禁用并重新启用主题之后),或者简单地将代码集成到html.tpl.php中,但在这两种情况下都不起作用。问题是否可能出现在CSS中?也许我不应该为这个函数使用表的id?通过使用$(function(){jQuery.each($(“#changeorder tr”),function(){$(this.children(:eq(1)”)。在($(this.children(:eq(0)”);})之后解决了这个问题;虽然不知道为什么这个解决方案有效,而另一个没有。不知道你是否有效,但一定要确保在任何.info文件更改后转储drupal缓存,否则你将看不到更改谢谢你的建议,它确实消除了我的许多疑问。然而,即使实施了您的解决方案,我仍然无法达到预期的效果。我尝试用代码创建一个新的.js文件,然后将其包含在.info文件中(当然,在禁用并重新启用主题之后),或者干脆集成