Javascript jQuery可以在JSFIDLE中工作,但不能在Drupal中工作
晚上好,, 我是jQuery的新手,因此如果我问了一个愚蠢的问题,希望您原谅我,但显然我一直面临以下问题,我认为我自己无法解决 我试图实现jQuery代码来更改表中列的顺序。代码如下: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
$(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文件中(当然,在禁用并重新启用主题之后),或者干脆集成