当未单击特定的div时,如何仅调用从另一个函数中调用的函数?

时间:2019-04-12 14:46:13

标签: javascript jquery function

我在代码中的几个地方叫campusInfo(id)。 在campusInfo(id)函数内部,我正在调用campusInfo_2(HouseID)

我正在呼叫campusInfo(id)的实例之一是在div的onclick上。 在这种情况下,我不希望调用CampusInfo_2(HouseID)。

这是campusInfo(id)javascript函数,它调用campusInfo_2(HouseID)

//campus information
function campusInfo(id) {
    fetch(`https://api/` + id)
        .then(r => r.json())
        .then(r => {
            const mapClassToResponse = {
                '.campus-name': 'name',
               '.program-levels-values:eq(4)': 'annualTuition'
            };
            var HouseID = r['Houses'][0]['HouseID'];

        Object.keys(mapClassToResponse).map(k => {

            $(k).html(r[mapClassToResponse[k]]);
        });

        //formatting numbers to have commas
        $(".program-levels-values:eq(4)").digits();
        $(".campus-number:eq(0)").digits();
        $(".campus-number:eq(1)").digits();            

        //program-levels
        $(r.programLevels).each(function (index, item) {
            $('.program-levels-values:eq(0)').append(item.programLevel + ' ');
        });

        //institution control
        if (r.isInstitutionControlPublic == false) {
            $('.program-levels-values:eq(2)').html('Private');
        } else {
            $('.program-levels-values:eq(2)').html('Public');
        }

campusInfo_2(HouseID);            
    }).catch(console.log);
 };

这是我不希望调用CampusInfo_2(HouseID)的div

  <div class="other-school" onclick="campusInfo(10)"><label 
  class="other-schools-list">Portland State University</label</div>

到目前为止,这是我尝试过的操作,但在控制台中说的是该元素未定义。

  if(document.getElementsByClassName('other-school').clicked == false)
        {
        campusInfo_2(HouseID);
        }

1 个答案:

答案 0 :(得分:0)

一种建议的解决方案是提供一个额外的论点。

<div class="other-school" onclick="campusInfo(10, false)">

然后您的方法定义将更改为:

function campusInfo(id, skipSecondCampusInfo) {

如果仅将其传递给内联绑定,则在所有其他调用上将为undefined。因此,您的通话可能会被以下内容包围:

if (skipSecondCampusInfo !== false) campusInfo_2(HouseID);

在这种情况下,如果未定义,它将执行它。否则,如果为假,则不会。