Jquery 将属性设置为函数,但不要';我不能运行它

Jquery 将属性设置为函数,但不要';我不能运行它,jquery,onclick,attributes,Jquery,Onclick,Attributes,考虑下面的jQuery代码。它根据用户选择的几个单选按钮设置一个var,并将该选择的值添加到URL中。然后,该url被设置为按钮的数据单击属性 如果不是因为函数setcheckoutLocation似乎是在选择radiobutton时触发的,那么这一切都可以正常工作。 我希望jQuery attr代码为所选元素设置属性,而不是立即运行它。它只需要在单击按钮本身(#DirectCheckExputton)时运行 jQuery(document).ready(function() { jQu

考虑下面的jQuery代码。它根据用户选择的几个单选按钮设置一个var,并将该选择的值添加到URL中。然后,该url被设置为按钮的数据单击属性

如果不是因为函数setcheckoutLocation似乎是在选择radiobutton时触发的,那么这一切都可以正常工作。 我希望jQuery attr代码为所选元素设置属性,而不是立即运行它。它只需要在单击按钮本身(#DirectCheckExputton)时运行

jQuery(document).ready(function() {
    jQuery('input').on('change', function() { // On choice selection
       var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
       var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

       jQuery('#directcheckoutbutton').attr('data-click', setcheckoutLocation(quickbuyurl)); // Set url as onClick for button
    });
});
jQuery(文档).ready(函数(){
jQuery('input')。在('change',function(){//在选择选项时
var productcode=jQuery('input:checked','#product options wrapper').val();//获取所选值代码
var quickbuyurl=''+productcode;//将代码添加到url的末尾
jQuery('#directcheckoutatton').attr('data-click',setcheckoutLocation(quickbuyurl));//将url设置为onClick for按钮
});
});
我想这样调用函数的方式可能会导致浏览器将其作为可执行函数读取,而不是(比如)需要附加到属性的字符串。 但我似乎无法理解,我尝试将单独变量中的函数设置为字符串,并附加该字符串,但不起作用。

试试这个

jQuery(document).ready(function() {
    jQuery('input').on('change', function() { // On choice selection
        var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
        var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

        jQuery('#directcheckoutbutton').attr('data-click', quickbuyurl); // Set url as onClick for button
    });
});
这假设您总是使用相同的函数
setcheckoutLocation()

编辑

您也可以跳过
输入
代码,只需在单击功能中进行处理:

jQuery('#directcheckoutbutton').on("click", function() {
    var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
    var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

    setcheckoutLocation(quickbuyurl);
});
jQuery('#directcheckoutatton')。在(“单击”,函数(){
var productcode=jQuery('input:checked','#product options wrapper').val();//获取所选值代码
var quickbuyurl=''+productcode;//将代码添加到url的末尾
设置签出位置(quickbuyurl);
});
试试这个

jQuery(document).ready(function() {
    jQuery('input').on('change', function() { // On choice selection
        var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
        var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

        jQuery('#directcheckoutbutton').attr('data-click', quickbuyurl); // Set url as onClick for button
    });
});
这假设您总是使用相同的函数
setcheckoutLocation()

编辑

您也可以跳过
输入
代码,只需在单击功能中进行处理:

jQuery('#directcheckoutbutton').on("click", function() {
    var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
    var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

    setcheckoutLocation(quickbuyurl);
});
jQuery('#directcheckoutatton')。在(“单击”,函数(){
var productcode=jQuery('input:checked','#product options wrapper').val();//获取所选值代码
var quickbuyurl=''+productcode;//将代码添加到url的末尾
设置签出位置(quickbuyurl);
});

使用您当前的代码片段,合适的解决方案如下:

jQuery(document).ready(function() {
    jQuery('input').on('change', function() { // On choice selection
       var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
       var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

       jQuery('#directcheckoutbutton').on('click', function(){ setcheckoutLocation(quickbuyurl);}); // Set url as onClick for button
    });
});
jQuery(文档).ready(函数(){
jQuery('input')。在('change',function(){//在选择选项时
var productcode=jQuery('input:checked','#product options wrapper').val();//获取所选值代码
var quickbuyurl=''+productcode;//将代码添加到url的末尾
jQuery('#directcheckoutatton')。on('click',function(){setcheckoutLocation(quickbuyurl);});//将url设置为按钮的onClick
});
});
这样,包装函数将在单击时执行

编辑:

只需添加一些解释,在原始代码中,您将函数setcheckoutLocation的结果链接到click事件

它可能是null或void,用一个简单的函数()包装它{}

定义函数,但在此不执行它

你也可以这样做

var wrapperFunction=函数(){ setCheckoutLocation(您的变量); }

这样,只需执行wrapperFunction()即可执行此函数; 或者通过简单地传递wrapperFunction(不带括号)将其作为示例中的参数提供


Edit2:看到你做了一个数据点击属性集,这不会有多大作用,但是像这样只绑定点击就可以了

使用你当前的代码片段,合适的解决方案如下:

jQuery(document).ready(function() {
    jQuery('input').on('change', function() { // On choice selection
       var productcode = jQuery('input:checked', '#product-options-wrapper').val(); // Get chosen value code
       var quickbuyurl = '<?php echo $_directcheckout; ?>'+productcode; // Add code to end of url

       jQuery('#directcheckoutbutton').on('click', function(){ setcheckoutLocation(quickbuyurl);}); // Set url as onClick for button
    });
});
jQuery(文档).ready(函数(){
jQuery('input')。在('change',function(){//在选择选项时
var productcode=jQuery('input:checked','#product options wrapper').val();//获取所选值代码
var quickbuyurl=''+productcode;//将代码添加到url的末尾
jQuery('#directcheckoutatton')。on('click',function(){setcheckoutLocation(quickbuyurl);});//将url设置为按钮的onClick
});
});
这样,包装函数将在单击时执行

编辑:

只需添加一些解释,在原始代码中,您将函数setcheckoutLocation的结果链接到click事件

它可能是null或void,用一个简单的函数()包装它{}

定义函数,但在此不执行它

你也可以这样做

var wrapperFunction=函数(){ setCheckoutLocation(您的变量); }

这样,只需执行wrapperFunction()即可执行此函数; 或者通过简单地传递wrapperFunction(不带括号)将其作为示例中的参数提供


Edit2:看到你做了一个数据点击属性集,这没什么作用,但是像这样绑定点击就行了

是的,你应该向你的按钮添加一个类或一个id,例如id$(“#yourid”)。on(…你在使用
setcheckoutLocation()
使用不同的输入,或者您也在更改函数吗?如果您没有更改,您可以存储
quickbuyurl
并使用该字符串调用函数?@RobinDorbell;这类似于
quickbuyurl='setcheckoutLocation('+productcode);
?值得一试:)-编辑:否,这不起作用,因为它也将jquery变量读取为字符串。是的,您应该向按钮添加一个类或一个id,例如id$(“#yourid”)。在(…上,您使用的是
setcheckoutLocation()
使用不同的输入,或者您也在更改函数吗?如果您没有更改,您可以存储
quickbuyurl
并使用该字符串调用函数?@RobinDorbell;这类似于
quickbuyurl='setcheckoutLocation('+productcode);
?值得一试:)-编辑:否,这不起作用,因为它也将jquery变量读取为字符串