javascript - 使用 jquery 存储与按钮点击关联的变量

标签 javascript jquery

我正在尝试存储与给定按钮关联的变量,然后可以将其用作 ajax PUT 的数据字段中的参数之一。我有以下内容,但无法弄清楚为什么它不存储 ratio 的值:

HTML

<li class="imgly-controls-item-square">SQUARE</li>
<li class="imgly-controls-item-16-9">16-9</li>
<li class="imgly-controls-item-9-16">9-16</li>

jQuery

$(".imgly-controls-item-square").click(function () {
    var ratio = "square";
    alert(ratio);
});
$(".imgly-controls-item-16-9").click(function () {
    var ratio = "16-9";
    alert(ratio);
});
$(".imgly-controls-item-9-16").click(function () {
    var ratio = "9-16";
    alert(ratio);
});

//Will store value of selected image crop orientation, that can then be appended to ajax data parameter below
var imageOrientation = ratio;

当前 JSFiddle:LINK

最佳答案

因为您的 ratio 变量是事件处理函数中的局部变量。只需直接设置imageOrientation即可:

var imageOrientation = /* default value here */;
$(".imgly-controls-item-square").click(function () {
    imageOrientation = "square";
});
$(".imgly-controls-item-16-9").click(function () {
    imageOrientation = "16-9";
});
$(".imgly-controls-item-9-16").click(function () {
    imageOrientation = "9-16";
});

// ...

也就是说,我会使用单选按钮并从选定的单选按钮中读取内容,而不是使用 li。您可以使用现代浏览器在很大程度上设置单选按钮的样式。

实例:

// A scoping function to avoid creating globals
(function() {
  // Declare the variable, set a default value
  var imageOrientation = "default value";
  
  // Respond to clicks on the list items but remembering an updated value
  $(".imgly-controls-item-square").click(function() {
    imageOrientation = "square";
  });
  $(".imgly-controls-item-16-9").click(function() {
    imageOrientation = "16-9";
  });
  $(".imgly-controls-item-9-16").click(function() {
    imageOrientation = "9-16";
  });
  
  // Sample code using the updated value
  $("input[type=button]").click(function() {
    snippet.log("Current orientation: " + imageOrientation);
  });
})();
<ul>
  <li class="imgly-controls-item-square">SQUARE</li>
  <li class="imgly-controls-item-16-9">16-9</li>
  <li class="imgly-controls-item-9-16">9-16</li>
</ul>
<input type="button" value="Do Something">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

关于javascript - 使用 jquery 存储与按钮点击关联的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29652660/

相关文章:

javascript - 为什么我不能同时运行这两个 javascript? (平滑滚动和固定页脚)

javascript - 如何从外部文件运行函数作为表单的 Action ?

javascript - jQuery Slimscroll 到具有固定标题的 HTML 表格

javascript - 面向对象的Javascript问题

javascript - document.getElementById 错误 : Uncaught ReferenceError: Invalid left-hand side in assignment

javascript - 选择 TypeError ui.item 未定义 Jquery 自动完成

javascript - Stellar.js 可以在调整窗口大小时重新调整元素偏移量吗?

jquery - 如何在移动设备的单列中呈现两列

jquery - 我是否使用开关或其他方式来简化此操作? jQuery

javascript - 是否有将 TinyMCE 与 word 之类的打印布局一起使用的在线示例