2 回答

TA貢獻1921條經驗 獲得超9個贊
您要替換.data附加了事件處理程序的元素。
如果你只是寫入<p>而不是重寫整個 DIV 會更好。
var data = [{
? ? "content": "first content"
? },
? {
? ? "content": "second content"
? }
];
$('.data').click(function() {
? var datacontent = $(this).data('content');
? //alert (datacontent)??
? $(this).siblings("p").text(data[datacontent].content)
});
.data {
? background: tomato;
? color: white;
? padding: 8px;
? display: inline;
? cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrap">
? <p>
? ? Hi, Please click data
? </p>
? <div class="data" data-content="0">data 1</div>
? <div class="data" data-content="1">data 2</div>
</div>

TA貢獻1863條經驗 獲得超2個贊
請嘗試
var data = [{
"content": "first content"
},
{
"content": "second content"
}
];
//$('.data').click(function() {
$(document).on('click','.data', function(){
var datacontent = $(this).attr('data-content');
//alert (datacontent)
$(this).parent().html('').append(`
<div class="wrap">
<p>${data[datacontent].content}</p>
<div class="data" data-content="0">data 1</div>
<div class="data" data-content="1">data 2</div>
</div>
`)
});

TA貢獻1906條經驗 獲得超10個贊
您不需要替換整個 html 代碼,只需替換同級p標簽即可。
var data = [{
"content": "first content"
},
{
"content": "second content"
}
];
$('.data').on('click', function(e) {
var datacontent = $(this).attr('data-content');
$(this).siblings("p").html(data[datacontent].content)
});
.data {
background: tomato;
color: white;
padding: 8px;
display: inline;
cursor: pointer;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="wrap">
<p>
Hi, Please click data
</p>
<div class="data" data-content="0">data 1</div>
<div class="data" data-content="1">data 2</div>
</div>
添加回答
舉報