jquery中的变量函数

jquery中的变量函数,jquery,Jquery,我不太擅长jquery。 有没有可能,放置一个变量运算符使函数工作?因为在不同的页面上使用了不同版本的jQuery .on-功能在1.7版本中出现,但一些网站的运行版本较低,因此我需要使用。请单击功能。我希望避免每个版本的代码重复 例如: $('#mySelector')(var <= 3.4) ? ".click(function()" : ".on('click', function()"); { $( "#dialog p span" ).remove(); $(

我不太擅长jquery。 有没有可能,放置一个变量运算符使函数工作?因为在不同的页面上使用了不同版本的jQuery

.on-功能在1.7版本中出现,但一些网站的运行版本较低,因此我需要使用。请单击功能。我希望避免每个版本的代码重复

例如:

$('#mySelector')(var <= 3.4) ? ".click(function()" : ".on('click', function()");

{
    $( "#dialog p span" ).remove(); 
    $( "#dialog p" ).append('<span>'+ isEncHTML(html_output) 
});

$(“#mySelector”)(var只需使用
。在这两种情况下单击
单击
在jQuery 1.7中有效

或者你可以这样做

var setClick = function (selector,handler) {
      return $.fn.on ?
              function () {
                  $(selector).on('click',handler)
              } 
              : function () {
                   $(selector).click(handler);
              }
}
你可以像这样使用它

setClick("#mySelector",function () {
    $( "#dialog p span" ).remove(); 
    $( "#dialog p" ).append('<span>'+ isEncHTML(html_output) 
});
然后像下面这样称呼它

$("#mySelector").setClick(function () {
    $( "#dialog p span" ).remove(); 
    $( "#dialog p" ).append('<span>'+ isEncHTML(html_output) 
});
$(“#mySelector”).setClick(函数(){
$(“#对话框p span”).remove();
$(“#对话框p”).append(“”+isEncHTML(html#U输出)
});
但在所有情况下,您最终都一事无成,因为上述所有内容都可以通过使用来完成。首先单击

我希望避免每个版本的代码重复

如果您想编写与jQuery的2个版本兼容的代码,但又不想重复代码,那么最好只编写针对代码支持的最低版本的代码

例如,如果最低值为1.6,则使用
bind
附加事件,如果需要将事件附加到动态生成的元素,则使用
delegate

单击
调用1.6中的bind anyway,因此您不妨使用
绑定

就我个人而言,我认为编写一个方法来支持多个版本是一个坏主意,很难维护,有时调试起来也很疯狂


但是,如果您针对特定版本的jQuery编写了两个单独的代码文件,则根据应用程序的不同,您可以只包含一个或另一个代码文件。

检查函数是否存在,而不是检查jQuery版本

if($.fn.on) {

}

谢谢你的回答。我知道。但是.click不支持ui框架中的按钮选项。我想使用:$(“#dialog”).dialog({modal:true,buttons:[{text:“OK”,click:function(){$(“#dialog p span”).remove();$(this.dialog(“close”)}}})@JSS:你能说得更具体一点吗?你到底想做什么?@Felix:我想根据变量选择是使用.on还是.click函数。但只在选择器所在的第一行。@JSS:是的,但你为什么要这样做?这与UI按钮有什么关系?我只是想知道你是否真的您必须做您认为必须做的事情,以及是否有其他方法。您的示例中没有任何关于jQuery UI的内容,因此很难弄清楚发生了什么。@jss以及在必须在第一个位置使用单击的情况下,您将如何处理UI按钮?谢谢您的回答。是的,我可以很容易地做到这一点。但是n我必须维护2个文件。如果可能的话,我希望避免这种情况。@JSS:这就是为什么我只需针对您必须支持的最低jQuery库编写代码,这样您就不必维护单独的代码文件或到处乱写代码。好的,但这并不能阻止我使用If-then-else来选择函数。您的决定on应该仅仅基于一个问题:
我必须支持的最低版本是什么?
这个问题的答案决定了你最终使用的jQuery库。我个人认为,如果你还想使用更高版本的jQuery为另一个应用程序编写代码,那么不编写单独的代码页是
惰性编码
,并且将在他最终花费的调试时间比您现在编写和维护单独代码页所花费的时间要多。就我个人而言,我会尝试通过编写最低的jQuery库来节省时间。
$.fn.setClick = function (handler) {
      return this.on ?
              function () {
                  this.on('click',handler)
              } 
              : function () {
                   this.click(handler);
              }
}
$("#mySelector").setClick(function () {
    $( "#dialog p span" ).remove(); 
    $( "#dialog p" ).append('<span>'+ isEncHTML(html_output) 
});
if($.fn.on) {

}