【问题标题】:jQuery .each() not working, any other ways?jQuery .each() 不起作用,还有其他方法吗?
【发布时间】:2019-03-07 10:10:32
【问题描述】:

我想在 jquery 中对每个做一个 foreach。

我的函数 jquery 调用了另一个函数 showTauxPlafonds,所以我希望每次调用这个函数都可以使用 ajax 返回结果。

对于我想要的每个<a>,当我单击时,我都会调用我的 function jquery

$("a").each(function() {
  $(this).on("click", function() {
    showTauxPlafonds(urlTaux, $(this).attr('tauxPlafonds'));
  })
});


var showTauxPlafonds = function(url, tauxPlafonds) {
  if (tauxPlafonds != null)
    getAjaxedHtmlView(url, {
      tauxPlafonds: tauxPlafonds
    }, null, 'app_taux_plafonds_values');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="mdc-list-item" tauxPlafonds="PSS" data-toggle="tooltip" data-placement="top" title="Acceuil" style="cursor:pointer;width:350px">
Plafond sécurité sociale
</a>
<a class="mdc-list-item" data-toggle="tooltip" data-placement="top" title="Taux et plafonds" style="cursor:pointer;width:350px">
Smic
</a>

【问题讨论】:

  • 您可以直接绑定到锚点,不需要每个 - $('a').on("click", function() { 尽管您的代码应该可以工作 - 您的确切问题是什么?是不是链接正在加载一个新页面,所以看起来你的代码没有被命中?或者$(this) 不是showTauxPlafonds(urlTaux, $(this).attr('tauxPlafonds')); 中的样子
  • 我给你做了一个合适的sn-p。请至少添加一个虚拟getAjaxedHtmlView
  • 这一行 - showTauxPlafonds(urlTaux, $(this).attr('tauxPlafonds')); - urlTaux 定义在哪里?
  • @Pete 我是怎么做到的?
  • 你能做什么?你还没说你的问题是什么?

标签: javascript jquery html


【解决方案1】:

我认为你的意思是,假设 url 是链接的可能 href

不需要showTauxPlafonds 函数,因为它只是测试将设置的属性,除非您的代码中有tauxPlafonds=""。然后你只需在选择器中测试它:

var urlTaux = "someurl";
$("a[tauxPlafonds!='']").on("click", function() {
  getAjaxedHtmlView(urlTaux, { 
    tauxPlafonds: $(this).attr("tauxPlafonds")
  }, null, 'app_taux_plafonds_values')
});

我确实建议您使用data-tauxPlafonds="PSS" 不要创建新类型的属性

有关测试属性的更多示例,请参阅jQuery: Select data attributes that aren't empty?

【讨论】:

  • 另一个问题我把“urlTaux”像问题中的代码一样放在哪里?
  • 我更新了答案 - 我在你的代码中看不到 urlTaux 的来源
  • @mecab1995 我的解决方案效率更高
  • 我已将代码更新为仅选择具有非空 tauxPlafonds 属性的链接
【解决方案2】:

这个方法也解决了我的问题:

$("a[tauxPlafonds]").on("click", function () {
showTauxPlafonds(urlTaux, $(this).attr('tauxPlafonds'));
});

【讨论】:

  • 是的,但这是低效的,因为所有 showTauxPlafonds 所做的都是测试 attr 是否为空,因为 $("a[tauxPlafonds]") 得到所有与属性一样
猜你喜欢
  • 2016-03-25
  • 1970-01-01
  • 1970-01-01
  • 2022-11-24
  • 2023-02-20
  • 1970-01-01
  • 1970-01-01
  • 2013-03-11
  • 1970-01-01
相关资源
最近更新 更多