【问题标题】:jQuery Multiple ID selectorsjQuery 多 ID 选择器
【发布时间】:2011-08-16 13:34:26
【问题描述】:

这是我的代码开头的 sn-p:

var myUpload = $("#upload_link").upload({bla bla bla

基本上我要做的是用几个不同的 ID 进行相同的调用...

我本以为这会起作用,但事实并非如此:

var myUpload = $("#upload_link,#upload_link2,#upload_link3").upload({

有什么想法吗?

【问题讨论】:

  • 你使用的上传插件是什么?你确定它遵循推荐的插件开发模式吗?
  • 它应该可以工作,必须是 upload 函数。 jsfiddle.net/X7TAX

标签: javascript jquery


【解决方案1】:

试试这个:

$("#upload_link,#upload_link2,#upload_link3").each(function(){
    $(this).upload({
        //whateveryouwant
    });
});

【讨论】:

  • 这个答案肯定会起作用,但理想情况下,任何插件逻辑都应该适用于所有匹配的元素。
  • 有没有办法像这样选择 $('#upload_*') ?
  • @HamidShoja $("*[id^='upload_']") 应该创建一个所有元素都以 'upload_' 开头的数组
【解决方案2】:

如果你给每个实例一个你可以使用的类

$('.yourClass').upload()

【讨论】:

    【解决方案3】:

    可以按照你写的方式使用多个id

    $('#upload_link, #upload_link2, #upload_link3')
    

    但是,这并不意味着当您执行代码时这些 ID 存在于 DOM 中。这也不意味着upload 是一个合法的函数。这也不意味着upload 的构建方式允许选择多个元素。

    upload 是一个自定义 jQuery 插件,因此您必须展示 upload 的情况,我们才能为您提供帮助。

    【讨论】:

      【解决方案4】:

      确保upload 插件在其中实现this.each,以便它将执行所有匹配元素的逻辑。理想情况下应该可以工作

      $("#upload_link,#upload_link2,#upload_link3").upload(function(){ });
      

      【讨论】:

        【解决方案5】:

        应该。通常这就是您执行多个选择器的方式。否则它可能不喜欢你尝试将三个上传的返回值分配给同一个 var。

        我建议使用 .each 或者将返回值推送到数组而不是将它们分配给该值。

        【讨论】:

          【解决方案6】:

          应该可以,逗号后可能需要一个空格。

          此外,您之后调用的函数必须支持对象数组,而不仅仅是单例对象。

          【讨论】:

            【解决方案7】:

            如果您在其id 中以upload_ 开头的所有元素具有相同的目的或语法,您可以尝试使用以下内容:

            $("*[id^='upload_']").each(function() {
                $(this).upload()
            });
            

            这样您就不必在选择器中指定每个元素。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2013-03-01
              • 2010-10-11
              • 2018-08-15
              • 2021-07-05
              • 2013-10-23
              • 1970-01-01
              • 2011-04-08
              相关资源
              最近更新 更多