我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.
以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.
这两种方式是:
var functionOne = function() {
// Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
// Some code
}
Run Code Online (Sandbox Code Playgroud)
使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?
yayQuery播客的第11集提到$ .ajax上下文选项.如何在成功回调中使用此选项?我目前正在做的是将输入参数传递回成功回调,以便我可以设置成功/错误后调用的id的动画.如果我使用context选项,那么也许我不必从被调用的例程中传回参数.
在此示例中,我将STATEID传递回success字段,以便在从数据库中删除状态后从DOM中删除状态:
$('td.delete').click(function() {
var confirm = window.confirm('Are you sure?');
if (confirm) {
var StateID = $(this).parents('tr').attr('id');
$.ajax({
url: 'Remote/State.cfc',
data: {
method: 'Delete',
'StateID': StateID
},
success: function(result) {
if (result.MSG == '') {
$('#' + result.STATEID).remove();
} else {
$('#msg').text(result.MSG).addClass('err');;
};
}
});
}
});
Run Code Online (Sandbox Code Playgroud) 我有一个函数callWithMagic,它将一个回调函数作为参数,并用一个参数调用它.
const callWithMagic = callback => {
const magic = getMagic();
callback(magic);
};
Run Code Online (Sandbox Code Playgroud)
我还有一个函数processMagic,它有两个参数:magic和theAnswer.
const processMagic = (magic, theAnswer) => {
someOtherMagic();
};
Run Code Online (Sandbox Code Playgroud)
我想将函数processMagic作为参数传递给callWithMagic,但我也希望42将第二个参数传递theAnswer给processMagic.我怎样才能做到这一点?
callWithMagic(<what should I put here?>);
Run Code Online (Sandbox Code Playgroud) 我有一个$image,我.fadeIn和.fadeOut,然后.remove后.fadeOut完成.这是我的代码:
$image
.fadeIn()
.fadeOut(function() {
$(this).remove();
});
Run Code Online (Sandbox Code Playgroud)
我想添加.delay后.fadeOut,并.remove在$image一次.delay完成.我试过了:
$image
.fadeIn()
.fadeOut()
.delay(1000, function() {
$(this).remove();
});
Run Code Online (Sandbox Code Playgroud)
问题是.delaydoest 不接受回调函数.我怎么.remove把图片作为回调.delay?
我似乎是徒劳无功地将其他参数传递回我为成功的ajax调用创建的成功回调方法.一点背景.我有一个页面,其中包含许多动态创建的文本框/选择框对.每对具有动态分配的唯一名称,例如name ="unique-pair-1_txt-url"和name ="unique-pair-1_selectBox",则第二对具有相同但前缀不同.
为了重用代码,我制作了回调来获取数据和对selectbox的引用.但是当回调被触发时,对selectbox的引用将返回为"undefined".我在这里读到它应该是可行的.我甚至尝试过利用'上下文'选项,但仍然没有.这是我尝试使用的脚本块:
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict();
function getImages(urlValue, selectBox) {
$j.ajax({
type: "GET",
url: $j(urlValue).val(),
dataType: "jsonp",
context: selectBox,
success:function(data){
loadImagesInSelect(data)
} ,
error:function (xhr, ajaxOptions, thrownError) {
alert(xhr.status);
alert(thrownError);
}
});
}
function loadImagesInSelect(data) {
var select = $j(this);
select.empty();
$j(data).each(function() {
var theValue = $j(this)[0]["@value"];
var theId = $j(this)[0]["@name"];
select.append("<option value='" + theId + "'>" + theValue + "</option>");
});
select.children(":first").attr("selected", true);
}
</script>
Run Code Online (Sandbox Code Playgroud)
从我所读到的,我觉得我很接近,但我不能把手指放在缺失的环节上.请帮助你典型的忍者隐身方式.TIA
****更新****尼克是一个真正的忍者.他们应该为此发明一个新的徽章!他下面的回答就是诀窍.正如他提到的那样具体是1.4,但我可以忍受.这是我的最终代码,适用于任何Ninjas的培训(以及我未来的参考):
<script type="text/javascript" language="javascript">
$j = jQuery.noConflict(); …Run Code Online (Sandbox Code Playgroud) 我想弄清楚是否有任何方法可以将索引参数传递给promise的回调函数.例如.
serviceCall.$promise.then(function(object){
$scope.object = object;
});
Run Code Online (Sandbox Code Playgroud)
现在我想传入一个数组索引参数as
serviceCall.$promise.then(function(object,i){
$scope.object[i] = something;
});
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?请告诉我.
这是下面的代码
StudyService.studies.get({id:
$routeParams.studyIdentifier}).$promise.then(function(study) {
$scope.study = study;
for(var i=0;i<study.cases.length;i++){
StudyService.executionsteps.get({id:
$routeParams.studyIdentifier,caseId:study.cases[i].id})
.$promise.then(function(executionSteps,i){
$scope.study.cases[i].executionSteps = executionSteps;
});
}
});
Run Code Online (Sandbox Code Playgroud) 我正在做一些表单验证,而我正在努力完成我想要完成的任务.我希望能够在字段的模糊处验证我的邮政编码,但也可以调用相同的函数来验证表单提交时的zip,并防止在邮政编码无效时提交表单.我的代码(一般来说)就是这样的.
function validateZipCode(event){
$.getJson(
url,
params,
function(data){
if(data.response === false){
someError.show();
event.preventDefault(); //stop the form from being submitted
}
}
);
}
$('#someForm').submit(function(event){
validateZipCode(event);
});
$('#zipInput').blur(function(event){
validateZipCode(event);
})
Run Code Online (Sandbox Code Playgroud)
我已经尝试使用这个jQuery中的方法将更多参数传递给回调帖子,但我似乎仍然无法完成我需要的东西.任何帮助表示赞赏.
我在循环中使用jQuery"GET"从服务器获取几个结果.我想将循环索引作为固定参数包含在回调中,但它不起作用.
(我遵循了本文关于如何做的建议.)
但是,我在回调中得到的值完全不是我所期望的 - 而不是每个循环索引值,它总是等于索引的退出值.
即.这里的代码片段为每次回调执行打印出'16'.如何让它打印1,2,3 ...(我意识到订单可能不同,那很好)
除了下面的代码,我还尝试了几种方法来指定回调函数,例如.function(data, textStatus) { return test(data, textStatus, idx); }, 'text');等等
这应该怎么样?
function test(data, textStatus, siteNo)
{
console.log("siteNo=" + siteNo);
}
function loadConfigLists()
{
var siteReport;
// retrieve site configuration
jQuery.get("svGetSiteConfig.php", function(data, textStatus)
{
// retrieve port configuration for all sites
for (var idx=1; idx<=15; idx++)
{
var probeIP = siteConfigArray[idx].siteIP;
if (probeIP != "" && probeIP != null)
jQuery.get("svGetPortInfo.php?svSiteIpAddr=" + probeIP+"&s="+idx,
function(data, textStatus) { test(data, textStatus, idx); }, 'text');
else …Run Code Online (Sandbox Code Playgroud) 我有以下 Jquery 代码,我试图$('.cbs-List').HTML(divHTML);根据区域值显示信息。但在成功函数中,我无法读取该区域的值,它指出
“数据未定义”
在这种情况下,将参数或值传递给成功函数的正确形式是什么?
$(document).ready(function() {
getSearchResultsREST('LA');
});
function getSearchResultsREST(region) {
var querySA = 'ClientSiteType:ClientPortal* contentclass:STS_Site Region=LA';
var queryDR = 'ClientSiteType:ClientPortal* contentclass:STS_Site Region=EM';
if(region == 'LA') {
var searchURL = _spPageContextInfo.webAbsoluteUrl + "/_api/search/query?queryText='" + querySA + "'";
} else {
var searchURL = _spPageContextInfo.webAbsoluteUrl + "/_api/search/query?queryText='" + queryDR + "'";
}
$.ajax({
url: searchURL,
method: "GET",
headers: {
"Accept": "application/json; odata=verbose"
},
contentType: "application/json; odata=verbose",
success: SearchResultsOnSuccess(data, region),
error: function(error) {
$('#related-content-results').html(JSON.stringify(error));
} …Run Code Online (Sandbox Code Playgroud) 假设元素值为55:
<span id="some">55</span>
Run Code Online (Sandbox Code Playgroud)
我想要:
所以我尝试过:
$("#some").fadeOut("slow").html("44").fadeIn("slow");
Run Code Online (Sandbox Code Playgroud)
但是上面首先将跨度的内容设置为44,然后淡出并淡入.
所以我尝试了一个回调:
function fadeOutComplete(){
$("#some").html("<%= @cc %>").fadeIn("slow");
}
$("#some").fadeOut("slow",fadeOutComplete);
Run Code Online (Sandbox Code Playgroud)
现在这个工作,但它的外观和感觉笨重.有没有办法写这个DRYer和更多jQuery-er?(甚至不确定我的意思是jQuery-er!)
我怎样才能传入要设置其值的元素和要设置的值,fadeOutComplete以便我可以将该回调排序为泛型?
我需要将额外的变量传递给jQuery,ajax回调函数.
例如,给定:
while (K--)
{
$.get
(
"BaseURL" + K,
function (zData, K) {ProcessData (zData, K); }
);
}
function ProcessData (zData, K)
{
console.log (K);
}
Run Code Online (Sandbox Code Playgroud)
ProcessData() 每次都会报告0(或K的最后一个值).
如何确保ProcessData()火灾与K的正确值相关或可以获得?
没有包装$get()函数有没有办法做到这一点?
嘿,我试图调用一个jquery函数,并以它的形式传递一些args
$('#button').mouseenter(exampleFunction(arg1,arg2));
function exampleFunction(arg1,arg2)
Run Code Online (Sandbox Code Playgroud)
该函数工作正常,没有像这样编写的args.
$('#button').mouseenter(exampleFunction);
function exampleFunction;
Run Code Online (Sandbox Code Playgroud)
但是只要我添加()把args放在函数中就停止工作了.
像这样:
$('#button').mouseenter(exampleFunction());
Run Code Online (Sandbox Code Playgroud)
看起来这是我的某种jquery语法错误
这是实际的代码
<script type="text/javascript">
$(document).ready(function() {
$('.section').mouseover(function(){
$('#nav2').fadeOut(0).animate({"height":"30px"}, 250);
});
$('#section1').hover(navSelect);
function navSelect(){
if ( $('.interior').is(':hidden')){
$('.subSection').fadeOut(250);
$('.interior').delay(250).fadeIn(250);
$('#selector').animate({"left":"0px"},250);
}}
$('#section2').mouseenter(function(){
if ( $('.exterior').is(':hidden')){
$('.subSection').fadeOut(250);
$('.exterior').delay(250).fadeIn(250);
$('#selector').animate({"left":"100px"},250);
}
});
$('#section3').mouseenter(function(){
if ( $('.view').is(':hidden')){
$('.subSection').fadeOut(250);
$('.view').delay(250).fadeIn(250);
$('#selector').animate({"left":"200px"},250);
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud) jquery ×9
javascript ×7
callback ×3
function ×3
closures ×2
syntax ×2
ajax ×1
angularjs ×1
args ×1
coldfusion ×1
effect ×1
idioms ×1
parameters ×1
promise ×1
validation ×1