【问题标题】:Change dynamically created button's style if conditions met jquery如果条件满足 jquery,则更改动态创建的按钮样式
【发布时间】:2017-12-17 17:23:22
【问题描述】:

谁能告诉我我的代码有什么问题,每当我通过我自己创建的分页导航到另一个页面并返回到我已经单击一个按钮的上一页时(单击的按钮将具有引导程序的 btn-success 和一个选中的图标),我单击的按钮将使用其默认值,即 btn-primary。现在,每当我浏览不同的页面时,我想在 btn-success 上保持单击按钮的样式。谢谢。

for(var isbnCount=0; isbnCount<isbnsplitted.length; isbnCount++){
    if(value.ISBN==isbnsplitted[isbnCount]){
        console.log("true: "+isbnsplitted[isbnCount]);          
        checkBox='<td id="buttons">'+
                    '<input type="hidden" id="'+value.ISBN+value.Title+'">'+
                    '<button type="button" class="button btn btn-success" name="'+value.ISBN+'" id="'+value.ISBN+'" value="'+value.Title+'"><i class="material-icons">check</i></button>'+
                '</td>';
    }
    else{
        console.log("false");
        checkBox='<td id="buttons">'+
                        '<input type="hidden" id="'+value.ISBN+value.Title+'">'+
                        '<button type="button" class="button btn btn-primary" name="'+value.ISBN+'" id="'+value.ISBN+'" value="'+value.Title+'"><i class="material-icons">library_add</i></button>'+
                  '</td>';
    }
}   
}               
bookCards='<tr id="tableRow">'+
            '<td id="title">'+value.Title+'</td>'+
            '<td id="author">'+value.Author+'</td>'+
            '<td id="author">'+value.Category+'</td>'+
            status+
            checkBox+
      '</tr>';
$('#tableBody').append(bookCards);

顺便说一下,我正在从我的服务器端加载一组新数据,AJAX 代码位于那段代码之上。

【问题讨论】:

  • 我相信你在问如何坚持用户的选择?如果他们单击第 1 页上的按钮,离开,然后返回第 1 页,您希望他们单击​​的按钮仍被“单击”吗?如果是这样,您将需要在数据库中实现某种持久性,或者如果您没有数据库,则可以使用 localstorage 来记住按下了哪些按钮。
  • ahmm 我已经做到了,变量 isbnsplitted 来自 `localStorage,看起来像这些, var splitThis=localStorage.getItem("isbn"); var isbnsplitted=splitThis.split(" "); `
  • 您是否考虑过对本地存储的调用虽然非常快,但却是异步的。这意味着在调用数据和数据可用之间存在延迟。此外,由于缺乏跨浏览器兼容性,可能不推荐使用本地存储。
  • 啊,请问我可以使用什么更好的存储空间?谢谢

标签: javascript jquery


【解决方案1】:

在这种情况下,我想推荐使用 Redux(只是把它放在那里)。我现在一直在一些小应用程序上一起修改 JQuery 和 Redux,它们一起工作得非常好。

Redux 可以存储所有用户设置等,并消除了在 jQuery 函数周围传递变量的复杂性。但更重要的是,与存储变量等相比,Redux 存储可以轻松持久化和重新加载。我有一个 JsBin 工作示例here,它存储和重新加载加载 Redux 存储。

// Reducer - takes the action types and reduces them into a new state condition.
const text = (state = {}, actions) =>{
  switch (actions.type) {
    case 'UPDATE_TEXT': return Object.assign({}, state, {value: actions.value})
    default: return state
  }  
}

// Store to hold state of the app - only one store but many properties. 
const updateText = Redux.createStore(text);


//Use subscribe() to update the UI in response to state changes.
updateText.subscribe(() => {
  let text = updateText.getState().value
  localStorage.setItem("text",text)
  $('#display').text(text)
});


// The only way to mutate the internal state is to dispatch an action.
// Dispatch = "Please dispatch this change, please"
$('#square').on('keyup',(e) => updateText.dispatch({type:'UPDATE_TEXT','value':e.target.value}))

$(document).ready(()=>{
  console.log('working')
  let text = localStorage.getItem("text")
  updateText.dispatch({type:'UPDATE_TEXT','value':text})
})

【讨论】:

  • 我可以为我需要的条件存储所需的数据,问题是我无法根据其事件历史显示按钮的样式。但是,谢谢你的建议,我稍后会考虑。
  • Redux 可以在它的对象存储中存储任何东西。为什么不获取并存储按钮的整个 html,包括它的当前类?
猜你喜欢
  • 1970-01-01
  • 2017-09-19
  • 2011-07-16
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 2020-06-27
  • 2017-07-03
  • 2023-01-12
相关资源
最近更新 更多