[英]Need help getting a previously working jQuery script to work on newer version
該腳本是由我無法咨詢的其他人編寫的。 它是為jQuery的較舊版本(可能是jQuery 1.3)編寫的,並且在該版本上運行良好。 在我的新網站上,該網站使用了最新版本的jQuery(1.7?),該腳本已完全損壞。
我可以通過將所有出現的“ $”替換為“ jQuery”來使其工作。 我不知道為什么這樣做是必要的,因為我在網上閱讀的所有教程和示例都顯示了正在使用的美元符號。
但是,代碼仍然存在問題。 當在輪播中選擇一個項目時,它似乎並未更改HTML中的單選按鈕以顯示該項目已被選中。 根據在線文檔,我嘗試使用.prop而不是.attr,但是它不起作用。
Avatar Builder(腳本的一部分)位於“編輯帳戶”頁面上。 我已經在新站點上創建了一個測試用戶,因此願意幫助的任何人都可以對其進行測試。 您可以在此處登錄: https ://comm7.he2236.vps.webenabled.net/user/login用戶名:testuser密碼:jQuery
編輯帳戶鏈接: https : //comm7.he2236.vps.webenabled.net/user/59/edit
我目前主要工作的代碼,包含在標頭中的boost_avatar_widget.js JS可以在以下位置查看:comm7.he2236.vps.webenabled.net
function select_avatar(image, button) {
image.input.prop('checked', true);
alert(image.input.is(':checked'));
jQuery('#layer_'+image.id).css({ backgroundImage: "url("+image.url+")" });
var src = button.attr("src");
button.parent().parent().find("li img").each(
function(index) {
if(jQuery(this).attr("src") == src)
jQuery(this).addClass("avatar_select");
else
jQuery(this).removeClass("avatar_select");
}
);
}
function unselect_avatar(image, button) {
image.input.prop('checked', false);
//select empty
jQuery('#default_input_'+image.id).prop('checked', true);
jQuery('#layer_'+image.id).css({ backgroundImage: "none" });
var src = button.attr("src");
button.parent().parent().find("li img").each(
function(index) {
if(jQuery(this).attr("src") == src)
jQuery(this).removeClass("avatar_select");
}
);
}
function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt) {
var data = carousel.data;
if(!data) {
var cid = carousel.list.attr('id').substring(9);
var data = new Array();
jQuery('#'+cid+' img').each(
function(index) {
var input = jQuery(this).siblings('input');
var url = jQuery(this).attr('src');
if(input.is(':checked')) {
jQuery('#layer_'+cid).css({ backgroundImage: "url("+url+")" });
}
data.push({id: cid, input: input, image: jQuery(this), url: url});
});
carousel.data = data;
jQuery('#user-edit').append('<div class="form-item" style="display:none"><label class="option"><input class="form-radio user_avatar_select" id="default_input_'+cid+'" type="radio" value="none" name="select_avatar_'+cid.substring(cid.lastIndexOf("_") + 1)+'"/></label></div>');
}
var idx = carousel.index(i, data.length);
var image = data[idx - 1];
var img = image.image.clone();
if(image.input.is(':checked'))
img.addClass("avatar_select");
carousel.add(i, img);
img.hover(
function(){jQuery(this).addClass("avatar_hover");},
function(){jQuery(this).removeClass("avatar_hover");}
);
img.click(
function () {
if(image.input.is(':checked'))
unselect_avatar(image, jQuery(this));
else
select_avatar(image, jQuery(this));
}
);
};
function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt)
{
carousel.remove(i);
};
function mycarsousel_init(list) {
if(!list.attr('id'))
return;
jQuery(".picture").append('<div class="avatar_layer" id="layer_'+list.attr('id')+'"></div>');
list.append('<ul id="carousel_'+list.attr('id')+'" class="jcarousel-skin-tango"></ul>');
jQuery('#carousel_'+list.attr('id')).jcarousel({
scroll: 6,
wrap: 'circular',
//itemLoadCallback: itemLoadCallbackFunction,
itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback},
itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback}
});
}
jQuery(document).ready(function () {
jQuery('div.user_avatar_select').parent().hide();
for(var i=0;i<10;i++) {
mycarsousel_init(jQuery('#user_avatars_select_'+i));
}
jQuery(".picture #current").css({display: "none"});
jQuery(".picture").css({"position": "relative", "width": "200px", "height": "200px", "background-image": "url(/sites/default/files/default_avatar.gif)"});
});
標頭中包含的用於較舊jQuery JS的代碼可以在以下位置查看:fclub.he2236.vps.webenabled.net
var ie55 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 5.5") != -1);
var ie6 = (navigator.appName == "Microsoft Internet Explorer" && parseInt(navigator.appVersion) == 4 && navigator.appVersion.indexOf("MSIE 6.0") != -1);
function select_avatar(image, button) {
image.input.attr("checked", "checked");
if (jQuery.browser.msie && (ie55 || ie6)) {
$('#layer_'+image.id).css('background-image', 'none');
$('#layer_'+image.id).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + image.url + '\', sizingMethod=\'scale\');';
}
else {
$('#layer_'+image.id).css({ backgroundImage: "url("+image.url+")" });
}
var src = button.attr("src");
button.parent().parent().find("li img").each(
function(index) {
if($(this).attr("src") == src)
$(this).addClass("avatar_select");
else
$(this).removeClass("avatar_select");
}
);
}
function unselect_avatar(image, button) {
image.input.attr("checked", "");
//select empty
$('#default_input_'+image.id).attr("checked", "checked");
$('#layer_'+image.id).css({ backgroundImage: "none" });
if (jQuery.browser.msie && (ie55 || ie6)) {
$('#layer_'+image.id).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader none;';
}
else {
$('#layer_'+image.id).css({ backgroundImage: "none" });
}
var src = button.attr("src");
button.parent().parent().find("li img").each(
function(index) {
if($(this).attr("src") == src)
$(this).removeClass("avatar_select");
}
);
}
function mycarousel_itemVisibleInCallback(carousel, item, i, state, evt) {
var data = carousel.data;
if(!data) {
var cid = carousel.list.attr('id').substring(9);
var data = new Array();
$('#'+cid+' img').each(
function(index) {
var input = $(this).siblings('input');
var url = $(this).attr('src');
if(input.attr("checked")) {
if (jQuery.browser.msie && (ie55 || ie6)) {
$('#layer_'+cid).css('background-image', 'none');
$('#layer_'+cid).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + url + '\', sizingMethod=\'scale\');';
}
else {
$('#layer_'+cid).css({ backgroundImage: "url("+url+")" });
}
}
data.push({id: cid, input: input, image: $(this), url: url});
});
carousel.data = data;
$('#user-edit').append('<div class="form-item" style="display:none"><label class="option"><input class="form-radio user_avatar_select" id="default_input_'+cid+'" type="radio" value="none" name="select_avatar_'+cid.substring(cid.lastIndexOf("_") + 1)+'"/></label></div>');
}
var idx = carousel.index(i, data.length);
var image = data[idx - 1];
var img = image.image.clone();
if(image.input.attr("checked"))
img.addClass("avatar_select");
carousel.add(i, img);
img.hover(
function(){$(this).addClass("avatar_hover");},
function(){$(this).removeClass("avatar_hover");}
);
img.click(
function () {
if(image.input.attr("checked"))
unselect_avatar(image, $(this));
else
select_avatar(image, $(this));
}
);
};
function mycarousel_itemVisibleOutCallback(carousel, item, i, state, evt)
{
carousel.remove(i);
};
function mycarsousel_init(list) {
if(!list.attr('id'))
return;
$(".picture").append('<div class="avatar_layer" id="layer_'+list.attr('id')+'"></div>');
list.append('<ul id="carousel_'+list.attr('id')+'" class="jcarousel-skin-tango"></ul>');
$('#carousel_'+list.attr('id')).jcarousel({
scroll: 6,
wrap: 'circular',
itemVisibleInCallback: {onBeforeAnimation: mycarousel_itemVisibleInCallback},
itemVisibleOutCallback: {onAfterAnimation: mycarousel_itemVisibleOutCallback}
});
}
if (Drupal.jsEnabled) {
$(document).ready(function () {
$('div.user_avatar_select').parent().hide();
for(var i=0;i<10;i++)
mycarsousel_init($('#user_avatars_select_'+i));
$(".picture #current").css({display: "none"});
$(".picture").css({"position": "relative", "width": "200px", "height": "200px", "background-image": "url(/files/default_avatar.gif)"});
if (jQuery.browser.msie && (ie55 || ie6)) {
$(".avatar_layer").each(function() {
//alert(jQuery(this).css('background-image'));
//$(this).css('background-image', 'none');
//$(this).get(0).runtimeStyle.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader' + '(src=\'' + image.url + '\', sizingMethod=\'scale\');';
});
}
});
}
嘗試使用jQuery()包裝元素。 例如: jQuery(image).input.attr('checked', true);
在Drupal 7中,請始終使用jQuery()而不是$(),否則,您需要使用以下代碼包裝代碼:
(function ($) {
// Your code here
})(jQuery);
希望這對您有幫助
找到了問題。 原因是HTML與頁面的D6至D7版本不同。 JavaScript和jQuery實際上並沒有什么問題,除了它並不能彌補這一差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.