相关疑难解决方法(0)

var functionName = function(){} vs function functionName(){}

我最近开始维护其他人的JavaScript代码.我正在修复错误,添加功能,并尝试整理代码并使其更加一致.

以前的开发人员使用两种声明函数的方法,如果背后有原因,我就无法解决.

这两种方式是:

var functionOne = function() {
    // Some code
};
Run Code Online (Sandbox Code Playgroud)
function functionTwo() {
    // Some code
}
Run Code Online (Sandbox Code Playgroud)

使用这两种不同方法的原因是什么?每种方法的优缺点是什么?有一种方法可以通过一种方法完成,而另一种方法无法完成吗?

javascript syntax idioms function

6645
推荐指数
32
解决办法
98万
查看次数

$ .ajax上下文选项

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)

coldfusion jquery

62
推荐指数
2
解决办法
6万
查看次数

将额外参数传递给回调函数

我有一个函数callWithMagic,它将一个回调函数作为参数,并用一个参数调用它.

const callWithMagic = callback => {
  const magic = getMagic();
  callback(magic);
};
Run Code Online (Sandbox Code Playgroud)

我还有一个函数processMagic,它有两个参数:magictheAnswer.

const processMagic = (magic, theAnswer) => {
  someOtherMagic();
};
Run Code Online (Sandbox Code Playgroud)

我想将函数processMagic作为参数传递给callWithMagic,但我也希望42将第二个参数传递theAnswerprocessMagic.我怎样才能做到这一点?

callWithMagic(<what should I put here?>);
Run Code Online (Sandbox Code Playgroud)

javascript parameters function callback

37
推荐指数
1
解决办法
2万
查看次数

回调.delay()

我有一个$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

jquery

23
推荐指数
2
解决办法
2万
查看次数

jQuery如何?将附加参数传递给$ .ajax调用的成功回调?

我似乎是徒劳无功地将其他参数传递回我为成功的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)

jquery jquery-callback

18
推荐指数
3
解决办法
5万
查看次数

将参数传递给angularjs中的promise的回调

我想弄清楚是否有任何方法可以将索引参数传递给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)

javascript callback promise angularjs

16
推荐指数
1
解决办法
2万
查看次数

我可以使用preventDefault(); 在ajax回调中?

我正在做一些表单验证,而我正在努力完成我想要完成的任务.我希望能够在字段的模糊处验证我的邮政编码,但也可以调用相同的函数来验证表单提交时的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中的方法将更多参数传递给回调帖子,但我似乎仍然无法完成我需要的东西.任何帮助表示赞赏.

javascript validation jquery

12
推荐指数
1
解决办法
5556
查看次数

for循环中的闭包 - 以循环变量作为参数的回调

我在循环中使用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)

javascript jquery closures jquery-callback

10
推荐指数
1
解决办法
7869
查看次数

如何在 jquery ajax 中向成功函数发送附加参数

我有以下 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)

javascript jquery

5
推荐指数
1
解决办法
8506
查看次数

如何淡出,设定价值,淡入淡出; 但做得更好'

假设元素值为55:

<span id="some">55</span>
Run Code Online (Sandbox Code Playgroud)

我想要:

  1. 淡出元素
  2. 设定值44
  3. 淡化元素

所以我尝试过:

$("#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 effect

4
推荐指数
2
解决办法
4217
查看次数

如何将参数传递给jQuery ajax请求的回调?

我需要将额外的变量传递给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()函数有没有办法做到这一点?

javascript ajax jquery closures callback

3
推荐指数
1
解决办法
450
查看次数

调用jquery函数时传递args

嘿,我试图调用一个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)

syntax jquery function args

3
推荐指数
1
解决办法
3552
查看次数