jQuery noConflict的工作

时间:2015-08-17 13:24:42

标签: jquery

我正在使用jquery没有混淆。但总结时间我对新外星人有点混淆。

//无法正常工作

jQuery.noConflict();
(function ($jq) {
    var myTable=$jq(".tblList").dataTable();
    myTable.$jq("input[name=isselected]").change(function () {});
})(jQuery);

//工作正常

jQuery.noConflict();
(function ($jq) {
    var myTable=$jq(".tblList").dataTable();
    //why $jq not works here
    myTable.$("input[name=isselected]").change(function () {});
})(jQuery);

1 个答案:

答案 0 :(得分:0)

在您的代码中myTable.$ 指的是 jQuery构造函数。 myTable对象没有$jq属性,它是undefined,您不能使用undefined值作为函数。

事实上,您的$jq参数与myTable.$jq无关。如果要使用字符串获取属性,则应使用括号表示法:object[aStringThatContainsNameOfAProperty]。但由于你有(jQuery构造函数)而不是"$"),所以使用括号表示法会得到与myObject对象没有:

function ( selector, context ) {
    // The jQuery object is actually just the init constructor 'enhanced'
    return new jQuery.fn.init( selector, context, rootjQuery );
}

property(上面的字符串是jQuery构造函数的字符串表示形式)。如果$jq变量的字符串值为$,则可以编码:

myTable[$jq](...)