我有一個JavaScript文件在這裏http://www.problemio.com/js/problemio.js,我試圖將一些jQuery代碼爲它看起來像這樣:如何放置一個jQuery片段成爲一個全球性的文件
$(document).ready(function()
{
queue = new Object;
queue.login = false;
var $dialog = $('#loginpopup')
.dialog({
autoOpen: false,
title: 'Login Dialog'
});
var $problemId = $('#theProblemId', '#loginpopup');
$("#newprofile").click(function()
{
$("#login_div").hide();
$("#newprofileform").show();
});
// Called right away after someone clicks on the vote up link
$('.vote_up').click(function()
{
var problem_id = $(this).attr("data-problem_id");
queue.voteUp = $(this).attr('problem_id');
voteUp(problem_id);
//Return false to prevent page navigation
return false;
});
var voteUp = function(problem_id)
{
alert ("In vote up function, problem_id: " + problem_id);
queue.voteUp = problem_id;
var dataString = 'problem_id=' + problem_id + '&vote=+';
if (queue.login = false)
{
// Call the ajax to try to log in...or the dialog box to log in. requireLogin()
}
else
{
// The person is actually logged in so lets have him vote
$.ajax({
type: "POST",
url: "/problems/vote.php",
dataType: "json",
data: dataString,
success: function(data)
{
alert ("vote success, data: " + data);
// Try to update the vote count on the page
//$('p').each(function()
//{
//on each paragraph in the page:
// $(this).find('span').each()
// {
//find each span within the paragraph being iterated over
// }
//}
},
error : function(data)
{
alert ("vote error");
errorMessage = data.responseText;
if (errorMessage == "not_logged_in")
{
//set the current problem id to the one within the dialog
$problemId.val(problem_id);
// Try to create the popup that asks user to log in.
$dialog.dialog('open');
alert ("after dialog was open");
// prevent the default action, e.g., following a link
return false;
}
else
{
alert ("not");
}
} // End of error case
}
}); // Closing AJAX call.
};
$('.vote_down').click(function()
{
alert("down");
problem_id = $(this).attr("data-problem_id");
var dataString = 'problem_id='+ problem_id + '&vote=-';
//Return false to prevent page navigation
return false;
});
$('#loginButton', '#loginpopup').click(function()
{
alert("in login button fnction");
$.ajax({
url:'url to do the login',
success:function() {
//now call cote up
voteUp($problemId.val());
}
});
});
});
</script>
爲什麼有我兩個原因試圖做到這一點:
1)我猜這只是一個很好的做法(希望它會更容易跟蹤我的全局變量等 2)更重要的是,我試圖調用voteUp(someId )函數在problemio.js文件的原始代碼中,我收到一個錯誤,說它是一個未定義的函數,所以我想我會有如果它在全局範圍內調用該函數,運氣會更好。我的方法正確嗎?
所以,我可以將放入此問題的代碼複製/粘貼到problemio.js文件中,還是必須刪除它的某些部分,如打開/關閉標記? document.ready()函數怎麼樣?我應該只有全局文件中的一個嗎?或者我應該擁有多個並且不會受傷的?
謝謝!
'if(queue.login = false)'不正確,需要兩個'=='進行比較。除此之外,使用'{}'而不是'new Object()'並將一個對象而不是一個字符串傳遞給ajax'data'。最後但並非最不重要的一點,請注意,您可以使用'.data(name [,value])'而不是'.attr('data-name')'。 – ThiefMaster
@ThiefMaster啊好點。修正了我的代碼中的==。 – GeekedOut
@ThiefMaster我是一個JS newb,使用{}語法和新的Object()之間有什麼區別?我應該如何改變它? – GeekedOut