Javascript 在jQuery.extend()中使用$(this)
我正在使用,并且希望该插件能用于每个Javascript 在jQuery.extend()中使用$(this),javascript,jquery,forms,object,jquery-plugins,Javascript,Jquery,Forms,Object,Jquery Plugins,我正在使用,并且希望该插件能用于每个表单.ajaxify。所以我有这个: $('form.ajaxify').ajaxForm( // the options ); 使用HTML 现在,我有一些我想一直传递的选项,比如dataType:'json'。除此之外,我希望能够在表单标签中添加更多选项,如下所示: <form class="ajaxify" ... data-ajaxify-options='{"target":"#x"}'> ... </form>
表单.ajaxify
。所以我有这个:
$('form.ajaxify').ajaxForm(
// the options
);
使用HTML代码>
现在,我有一些我想一直传递的选项,比如dataType:'json'
。除此之外,我希望能够在表单
标签中添加更多选项,如下所示:
<form class="ajaxify" ... data-ajaxify-options='{"target":"#x"}'> ... </form>
$('.ajaxify').ajaxForm(
jQuery.extend(
{
dataType: 'json'
},
$(this).data('ajaxify-options')
)
);
但是,这不起作用:只传递文本对象,不进行任何扩展。我认为这不起作用,因为$(this)
不再引用表单.ajaxify
元素。这是正确的吗?通常可以将$(this)
存储在变量中,但是,这意味着代码会变得复杂,对吗?在一条线上就不可能了。还是有其他解决办法
我认为这不起作用,因为$(this)
不再引用表单.ajaxify
元素。这是正确的吗
是的,尽管此
从未提及该元素。它只在jQuery调用的回调函数中执行,但是您正在使用它为ajaxForm
调用构建参数<代码>此将引用任何内容
通常可以将$(this)
存储在变量中,但是,这意味着代码会变得复杂,对吗
您可以将$('form.ajaxify')
存储在变量中,因为$(这)
没有意义,但确实需要这样做。不过,这并不会真正使代码“复杂化”:
var form = $('.ajaxify');
form.ajaxForm($.extend({
dataType: 'json'
}, form.data('ajaxify-options')));
如果要避免使用该变量,则需要重复选择器,这是一种糟糕的做法
对于适用于选定集合中多个表单的代码段,您可以使用将该方法应用于具有可能不同选项的每个元素,并且在其回调中,您现在可以使用this
:
$('.ajaxify').each(function() {
// caching $this=$(this) is possible as well, but not as necessary
$(this).ajaxForm($.extend({
dataType: 'json'
}, $(this).data('ajaxify-options')));
});
我认为这不起作用,因为$(this)
不再引用表单.ajaxify
元素。这是正确的吗
是的,尽管此从未提及该元素。它只在jQuery调用的回调函数中执行,但是您正在使用它为ajaxForm
调用构建参数<代码>此将引用任何内容
通常可以将$(this)
存储在变量中,但是,这意味着代码会变得复杂,对吗
您可以将$('form.ajaxify')
存储在变量中,因为$(这)
没有意义,但确实需要这样做。不过,这并不会真正使代码“复杂化”:
var form = $('.ajaxify');
form.ajaxForm($.extend({
dataType: 'json'
}, form.data('ajaxify-options')));
如果要避免使用该变量,则需要重复选择器,这是一种糟糕的做法
对于适用于选定集合中多个表单的代码段,您可以使用将该方法应用于具有可能不同选项的每个元素,并且在其回调中,您现在可以使用this
:
$('.ajaxify').each(function() {
// caching $this=$(this) is possible as well, but not as necessary
$(this).ajaxForm($.extend({
dataType: 'json'
}, $(this).data('ajaxify-options')));
});
我认为这不起作用,因为$(this)
不再引用表单.ajaxify
元素。这是正确的吗
是的,尽管此从未提及该元素。它只在jQuery调用的回调函数中执行,但是您正在使用它为ajaxForm
调用构建参数<代码>此将引用任何内容
通常可以将$(this)
存储在变量中,但是,这意味着代码会变得复杂,对吗
您可以将$('form.ajaxify')
存储在变量中,因为$(这)
没有意义,但确实需要这样做。不过,这并不会真正使代码“复杂化”:
var form = $('.ajaxify');
form.ajaxForm($.extend({
dataType: 'json'
}, form.data('ajaxify-options')));
如果要避免使用该变量,则需要重复选择器,这是一种糟糕的做法
对于适用于选定集合中多个表单的代码段,您可以使用将该方法应用于具有可能不同选项的每个元素,并且在其回调中,您现在可以使用this
:
$('.ajaxify').each(function() {
// caching $this=$(this) is possible as well, but not as necessary
$(this).ajaxForm($.extend({
dataType: 'json'
}, $(this).data('ajaxify-options')));
});
我认为这不起作用,因为$(this)
不再引用表单.ajaxify
元素。这是正确的吗
是的,尽管此从未提及该元素。它只在jQuery调用的回调函数中执行,但是您正在使用它为ajaxForm
调用构建参数<代码>此将引用任何内容
通常可以将$(this)
存储在变量中,但是,这意味着代码会变得复杂,对吗
您可以将$('form.ajaxify')
存储在变量中,因为$(这)
没有意义,但确实需要这样做。不过,这并不会真正使代码“复杂化”:
var form = $('.ajaxify');
form.ajaxForm($.extend({
dataType: 'json'
}, form.data('ajaxify-options')));
如果要避免使用该变量,则需要重复选择器,这是一种糟糕的做法
对于适用于选定集合中多个表单的代码段,您可以使用将该方法应用于具有可能不同选项的每个元素,并且在其回调中,您现在可以使用this
:
$('.ajaxify').each(function() {
// caching $this=$(this) is possible as well, but not as necessary
$(this).ajaxForm($.extend({
dataType: 'json'
}, $(this).data('ajaxify-options')));
});
按照调用
$.extend()
的方式,要扩展的对象是作为第一个参数传入的对象文本。您没有将对该对象的引用保存到任何位置,因此即使调用$.extend()
“有效”,您也无法访问结果。编辑不必介意我是稠密的或疯狂的:)@Pointy我不确定我是否明白你的意思,但我不需要访问结果;它们被用作$(.ajaxify)的选项。ajaxForm
@Pointy:我认为$.extend
返回扩展对象。到底什么不起作用?我不认为这与$(这个)
@FelixKling有什么关系。我也会将其添加到问题中,但不起作用的是:$.extend
的结果只是第一个对象(文本);.data()
调用中没有任何内容被扩展。您调用$.extend()
的方式是,对象被扩展