我在这里的第一个问题......我已经搜索了其他Q& A,但找不到我正在寻找的重点。
我是一个jquery begginer,所以,当然,这使我更难以使解决方案适应我的问题。
所以...我有以下代码:
(function($){
$('select[data-select="cidades-distinct"]').ajaxSelect('http://www.myurl.asp', #destination);
})(jQuery);
我用它来填充ajax,根据国家的州选择,用城市名称填写表格。所以...要知道哪个是包含状态选项的选择我使用数据属性data-select。城市列表以#destination ID返回。 HTML代码是:
<select data-select="cidades-distinct" id="myid" name="myname">
完美无缺。但是......如果我想使用多个州/城市列表,我就不能使用这个功能,因为它将列表返回到相同的ID #destination。
所以,我想要做的是通过数据属性从表单传递我的id目标名称,例如data-destination =“#destination”。所以,我的HTML代码是:
<select data-select="cidades-distinct" data-destination="#cidade" id="myid" name="myname">
但我不能这样做!我尝试了下面的代码以及一些变化,但是有些不对劲!
(function($){
$('select[data-select="cidades-distinct"]').ajaxSelect('http://www.myurl.asp', $(this).attr("data-destination"));
})(jQuery);
你能帮帮我吗?
编辑:添加ajaxSelect函数 这是ajaxSelect:
jQuery.noConflict();
(function($){
$.fn.extend({
ajaxSelect: function(url, destino){
return this.change(function(){
var t = $(this),
valor = t.val();
$.ajax({
'url': url,
'data': {'valor': valor, 'action':'ajaxSelect'},
'type': 'GET',
'success': function(response){
$(destino).html(response)
$(destino).trigger("chosen:updated");
},
'error': function (error){
console.log(error);
loading.hide();
alert('Error!');
}
});
});
}
});
})(jQuery的);
答案 0 :(得分:0)
“this”关键字 在JavaScript中,与大多数面向对象的编程语言一样,这是一个特殊的关键字,在方法中用于引用调用方法的对象。使用一系列简单步骤确定其值:
// A function invoked using Function.call()
var myObject = {
sayHello: function() {
console.log( "Hi! My name is " + this.myName );
},
myName: "Rebecca"
};
var secondObject = {
myName: "Colin"
};
myObject.sayHello(); // "Hi! My name is Rebecca"
myObject.sayHello.call( secondObject ); // "Hi! My name is Colin"
// A function created using Function.bind()
var myName = "the global object";
var sayHello = function() {
console.log( "Hi! My name is " + this.myName );
};
var myObject = {
myName: "Rebecca"
};
var myObjectHello = sayHello.bind( myObject );
sayHello(); // "Hi! My name is the global object"
myObjectHello(); // "Hi! My name is Rebecca"
// A function being attached to an object at runtime.
var myName = "the global object";
var sayHello = function() {
console.log( "Hi! My name is " + this.myName );
};
var myObject = {
myName: "Rebecca"
};
var secondObject = {
myName: "Colin"
};
myObject.sayHello = sayHello;
secondObject.sayHello = sayHello;
sayHello(); // "Hi! My name is the global object"
myObject.sayHello(); // "Hi! My name is Rebecca"
secondObject.sayHello(); // "Hi! My name is Colin"
在长命名空间深处调用函数时,通常将对实际函数的引用存储为单个较短的变量,从而减少需要键入的代码量。重要的是不要使用实例方法执行此操作,因为这会导致函数中的this值发生更改,从而导致代码操作不正确。例如:
var myNamespace = {
myObject: {
sayHello: function() {
console.log( "Hi! My name is " + this.myName );
},
myName: "Rebecca"
}
};
var hello = myNamespace.myObject.sayHello;
您好(); //“嗨!我的名字未定义” 但是,您可以安全地减少调用该方法的对象:
var myNamespace = {
myObject: {
sayHello: function() {
console.log( "Hi! My name is " + this.myName );
},
myName: "Rebecca"
}
};
var obj = myNamespace.myObject;
obj.sayHello(); // "Hi! My name is Rebecca"