带有data属性-的If语句根据所点击的产品加载两个不同的模板

If Statements with data attribute - load two different templates based on what product has been clicked

本文关键字:加载 两个 If 属性 data 语句 带有      更新时间:2023-09-26

我想根据data属性打开两个模板,如果品牌是SIM则打开template1,如果三星打开另一个。

下面是我的代码:
$('.item .show-detail').click(function(){
    if($(this).find('[data-brand="SIM"]')) {
        var myLink1 = $(this);
        alert('hey');
        $('.content .row').fadeOut({complete: function(){detailTemplate1('Voice',$(myLink1).parent().data('brand'), $(myLink1).parent().data('model'), $(myLink1).parent().data('subcat')); $('.content .row').fadeIn(400)}});
    }else
        ($(this).find('[data-brand="Samsung"]'))
        var myLink = $(this);
        alert('link All');
        $('.content .row').fadeOut({complete: function(){detailTemplate('Voice',$(myLink).parent().data('brand'), $(myLink).parent().data('model'), $(myLink).parent().data('subcat')); $('.content .row').fadeIn(400)}});
})

您的代码中有很多问题。

  1. 你不能为else指定条件,你必须说else if
  2. else if块包裹在括号中。
  3. 使用length查找元素是否存在

这是假设数据品牌存在于你点击的item元素:

$(document).ready(function(){

    $('.item').click(function(){
            if( $(this).find('[data-brand="SIM"]').length ) {
                var myLink1 = $(this);
                alert('SIM');
            }
            else if ( $(this).find('[data-brand="Samsung"]').length ) {
                var myLink = $(this);
                alert('Samsung');
            }
    });
});
http://jsfiddle.net/f32epg16/

jquery对象总是真实的,需要检查长度。

if($(this).find('[data-brand="SIM"]').length)

第二个else没有子句。你需要删除它或者使用else if

试试这个

$(document).ready(function(){
    $('.item .show-detail').click(function(){
        if($(this).attr("data-brand")=="SIM")
            alert("SIM");
        else if($(this).attr("data-brand")=="Samsung")
            alert("Samsung");
   });
});

使用jquery的attr方法查找它的值并做相应的工作