jQuery参数suddely变为n.Event对象

时间:2016-04-18 12:29:35

标签: javascript jquery

我的页面上有一个下拉列表,我选择了这样的值:

<select id="campaign" class="form-control">
      <option>Choose campaign</option>
      <option value="createCampaign">Create new campaign</option>
      <?php while($row=$resultForCampaigns->fetch_assoc()){
        $campaignName=$row['campaign_name'];
        echo "<option value=$campaignName>$campaignName</option>";
    }?>
</select>
var campaign = $('#campaign option:selected').val();

但是当我传递相同的campaign值作为新函数的参数时,console.log(campaign)它会说:enter image description here

以下是整个代码:

$(document).ready(function() {
  $('#campaign').change(function() {
    var campaign = $('#campaign option:selected').val();
    console.log(campaign);
    if (campaign != 'Choose campaign') {
      console.log(campaign);
      $('#deleteCampaign').click(function(campaign) {
        console.log(campaign);
        var r = confirm("Are you absolutely sure you want to delete selected campaign?");
        if (r == true) {
          var data = {};
          data.action2 = "deleteCampaign";
          data.campaign = campaign;

          $.ajax({
            url: "../includes/adapter.php",
            type: "POST",
            dataType: "JSON",
            data: data,
            async: true,
            success: function() {
              if (data) {
                console.log(data);
                $('#poruka').append('<div class="alert alert-success"><strong>Success!</strong> You have successfully deleted campaign!</div>');

              } else {
                $('#poruka').append('<div class="alert alert-danger"><strong>Failure!</strong> Something went wrong with deleting your campaign! Please try again</div>');
              }
            }
          });
        }
      });
    }
  });
});

因此,点击console.log(campaign)$('#deleteCampaign')会将campaign的值从我提供的值转换为图片所代表的值。真的不知道发生了什么事,所以如果有人能解释我如何在咔嗒一声触发的功能中获得正确的价值,我会非常感激。

1 个答案:

答案 0 :(得分:2)

当您在较低范围中使用与函数参数相同的名称时,将重新定义变量var something = 'stuff'; function go() { something = 'other stuff'; console.log(something); // obviously "other stuff" } 。 变量的作用域是函数,函数参数被认为是变量,它与执行

相同
click

jQuery中var campaign = $('#campaign option:selected').val(); $('#deleteCampaign').click(function() { console.log(campaign); // still the value 函数的第一个参数是事件对象,你不能传递任何其他东西。

您只需删除参数即可。

{{1}}