Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在jQuery.extend()中使用$(this)_Javascript_Jquery_Forms_Object_Jquery Plugins - Fatal编程技术网

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()
的方式是,对象被扩展