【问题标题】:Javascript only firing onceJavascript 只触发一次
【发布时间】:2013-12-20 03:48:26
【问题描述】:

长期潜伏在这里问我的第一个公开问题,因为我真的被困住了。

我正在使用托管购物车平台,因此我只能在某些指定的 div 中添加代码。我有一个要从外部调用的 javascript 代码(因为内联不好,除非你必须这样做,对吧?)

所以我的问题是,有一个<select> 下拉列表,我无法直接访问更改 HTML 并且愚蠢的购物车平台没有给它一个 id,只设置了 name 属性。

单击<select name="ShippingSpeedChoice"> 下拉菜单时,我需要清除<div id="result_div">,所以我有:

$("[name=ShippingSpeedChoice]").change(function(e) { $("#result_div").empty(); });

它会触发一次,但仅此而已。我的问题是,如何在每次点击 <select name="ShippingSpeedChoice"> 时让它触发?

这是所有相关的 javascript(以防它阻止 #result_div 清除某处):

    $("[name=ShippingSpeedChoice]").change(function(e) {
        $("#result_div").empty();
    });

    $("#btn_calc").click(function(e) {      /// onclick on Calculate Delivery Date button

在此先感谢,感谢任何帮助!

【问题讨论】:

  • 您希望它在他们每次点击它时触发,即使他们不更改值?将其绑定到 click 事件而不是 change 事件。
  • 您应该努力将问题中的代码减少到最低限度。另外,您省略了 HTML 部分。
  • 你能否检查一下在第一次和第二次点击之间是否重新创建了选择元素......如果是这样,请查看事件委托
  • 我不确定这是否是购物车的正确规范,如果选择没有任何变化,更新屏幕没有多大意义。尽管他确实使用了“每次单击时都更改”的措辞,但我确实相信他可能有其他意思。
  • 另外 - 我想你的意思是 [5] 这里? ;) FXONtransitdays[4] = "Friday"; FXONtransitdays[4] = "Saturday";

标签: javascript jquery html name-attribute


【解决方案1】:

如果您希望每次单击元素时都发生某些事情,请使用.click() 而不是.change()。后者仅在他们从菜单中选择与以前不同的值时才会触发。

$("[name=ShippingSpeedChoice]").click(function(e) { $("#result_div").empty(); });

【讨论】:

  • 嗨 Barmar,我已经尝试过 .click.change - 老实说,它是否会触发 .click.change 我不在乎,关键是它只会触发一次,并且每次发生更改或单击
  • 你能做个小提琴吗?
  • 我试着做一个小提琴,但是有太多的外部内容(来自托管的购物车),它没有复制现实。无论如何,我最终还是使用了父元素的id。感谢您的回复!
【解决方案2】:

首先,我可能会尝试将购物车选择设置为具有 ID。

$("[name=ShippingSpeedChoice]").id = 'shopping_cart_select';

然后尝试通过它的 id 将“更改”函数绑定到元素。

$('#shopping_cart_select').bind('change', function(){
//rest of code goes here
}

【讨论】:

    【解决方案3】:

    我仍然无法使用name 属性来调用该函数,因此我找到了一种解决方法,方法是使用tdid ShippingSpeedChoice 下拉列表:

        $("#DisplayShippingSpeedChoicesTD").change(function(e) {
            $("#result_div").empty();
    

    现在每次都会触发。非常感谢您的所有反馈和帮助 - 我仍然希望我能弄清楚如何使用 name 属性而不是 id,但这将是另一天的难题!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-23
      • 2021-03-22
      • 2015-09-07
      • 2016-11-10
      • 2016-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多